天天看點

Unity3d 要點闆書

要點闆書

WWW.unity3d.com.cn

Unity Project  unity的項目檔案/專案

Scene  unity的場景檔案

Scene 場景視窗

Game 預覽視窗

H... 物件視窗

Project項目/專案管理視窗

I.。。。。屬性欄(監測視窗)

材質 MeshRenderer

元件

第三人稱控制器自動捕捉的是帶有MainCamera标簽(tag)的錄影機

子檔案夾含有Assets檔案夾 unity項目檔案

aaa.Unity Scene File    unity場景檔案

aaa.UnityPackage    unity資源(可導入到unityProject視窗)

Fbx格式為unity支援模型格式

Unity中最節省資源的圖檔格式為PNG

投影遮罩

點光源投影遮罩圖檔需要是CubeMap

點光設定實時影子

 Edit->ProjectSettings->Player

                        File->BuildSettings –>PlayerSetting

                            ->OtherSettings->RenderingPath->DeferredLighting

點光烘焙影子

                            RenderingPath->forward(在場景中看不到實時影子效果

但是,在LightMapping中烘焙之後影子即可顯現出來)

平行光不能直接添加太陽光效果,必須通過元件的方式

Component->Effets->LensFlare

靜态物體的影子隻能投放在靜态物體身上

天空盒 Edit –> RenderSettings  找到SkyboxMaterial

正交錄影機(沒有透視關系)用于小地圖

11.6  

光源偵測

  1. 1.      任意選擇場景中的物體,添加光源偵測元件

Component –> Rendering –> LightProbeGroup

  1. 2.      添加偵測小球AddProbe
  2. 3.      烘焙LightMapping

注意:設定靜态Static

烘焙兩次第一次烘焙偵測小球BakeProbes

           第二次烘焙場景BakeScene

  1. 4.      選擇需要利用偵測的物體,如cube(不需要設定靜态),

并找到元件MeshRenderer下的UseLightProbes進行勾選

刷地形

準備:先設定大小400*400  厚度30

預置物

11.7

Terrain元件設定中 Case shadows選項若取消勾選地形及花草樹木

影子不被烘焙(注意:烘焙後才能看到效果)

樹如果需要受風影響必須在Terrain元件中找到

建立樹按鈕->并到EditTree->設定BendFactor參數必須大于0

軌迹追蹤component->Effects -> TrailRenderer

11.10

l  剛體Rigidbody

IsKinematic 取消剛體實體屬性

l  實體材質PhysicMaterial

l  音效AudioSource

一般背景音效為2D音效選擇背景音效取消3DSound勾選->Apply

3D音效可設定範圍,将MaxDistance放大或縮小範圍,

将VolumeRolloff音效曲線設定成LinearRolloff

Mute靜音

PlayOnAwake遊戲一運作就開始播放

Loop 循環播放音效

Volume 音量大小

l  腳本

移動的寫法

transform.position += Vector3.up * speed; //世界坐标

transform.position += new Vector3 (0, 0, 0.02f); //世界坐标

transform.Translate (0, 0, 0.02f);//自身坐标

transform.Translate (0, 0, 0.02f,Space.World);//世界坐标

transform.position.x/y/z 用于判斷

transform.position = new Vector3 (0, 0, 0);定義物體位置

11.11

Unassigned….. 此錯誤提示說明有物體沒有給

transform.eulerAngles.y >= 30//用于角度判斷

transform.eulerAngles = new Vector3(10, 10, 10);//定義物體角度

l  滑鼠位置移動是以像素為機關

物體位置/大小Position/Scale 以米為機關

l  注意:利用GUITexture制作光标換圖效果必須先将GUITexture位置坐标歸0

l  Edit -> ProjectSettings -> Input

Input.GetKey。。。    輸入鍵盤上的鍵(傳回值是Bool)

Input.GetButton。。。自定義按鈕(傳回值是Bool)

應用Input.GetAxisRaw時(傳回值是float)

Input.GetAxis

Raw

("Vertical/ Horizontal ")

Negative Button 負按鈕(傳回值是-1)

Positive Button  正按鈕(傳回值是1)

應用Input.GetAxis時(傳回值是float)

Input.GetAxis("Vertical/ Horizontal ")

Negative Button 負按鈕(傳回值逐漸過渡到-1)

Positive Button  正按鈕(傳回值逐漸過渡到1)

11.12

OnMouseDown()..是指物體受到滑鼠點選,此函數運作時隻執行一次

OnMouseOver()此函數運作時會一直執行

隻能用在帶有碰撞的物體及GUITexture,GUIText

l  注意:OnMouseDown()..與Input.GetMouseButtonDown(0)差別

Input.GetMouseButtonDown(0)就是指滑鼠點選,不論腳本給誰,點選任意地方都可執行效果

OnMouseDown()..帶有此函數的腳本給誰,誰才發生作用(并且是受到滑鼠點選)

public Light myLig;

myLig.enabled = false;//單獨元件的勾選

gameObject.SetActive(false);//整個物體的勾選

練習:通過F1、F2、F3三種錄影機切換

(1.          正常視角2.俯視圖3.圍繞場景旋轉錄影機)

OnDisable  ()

是指物體最上方勾選取消時調用

OnEnable()

是指物體最上方/單獨組建(腳本本身元件)勾選激活時調用

Ctrl + R重新整理

11.13

l  如果物體需要通過腳本更改透明數值的話,必須先将Shader更改成                        

注意:

不同方法之間調用時(如OnMouseDown()與Update()之間)

有的數值隻讀時怎麼辦(如guiTexture.color.a, transform.position.x)

一鍵控制時(bool=!bool ,int=-int)

來回循環效果(a+=b,将b取反,判斷a的值)

l  換服裝,換裝備

Material材質球

renderer.material.mainTexture = myTexture[0];

Mesh 網格(外形,形狀)

GetComponent<MeshFilter>().mesh = myMesh[0];

l  動畫如果需要隻播放一次,需要找到此動畫的模型源檔案

腳本控制播放一次動畫後,切換到其他動畫

if(!animation.IsPlaying("Attack02"))//如果沒有播放Attack02動畫

animation.Play("Idle");

分别意思為:

清除所有  

重複的提示隻顯示一行

隻顯示最新列印效果(一般都需要按下)

隻要出現警示,就暫停運作(一般不需要按下)

分别意思為:

列印輸出

提示

錯誤提示

11.14

Animation

l  建立animation,然後選擇動畫到 選到Debug

調節數值

不要忘記再調節成Normal

先時間後位置

一個動畫多個利用:(如:物1模拟物2)

  1. 1.      先明白原理,動畫的運動是相對運動
  2. 2.      建立空物體與世界坐标原點重合
  3. 3.      将物1與物2動畫中的起始位置重合(Reset)
  4. 4.      将物1與空物體打組,空物體為父級,移動空物體到任意位置即可實作。

觸發事件(觸發器)

  1. 1.      兩者必須都有碰撞
  2. 2.      其中之一isTrigger勾選,兩者都勾選也可
  3. 3.      動的物體加剛體/本身帶有元件

11.17

執行個體化(誕生)

l  Instantiate(誕生的物體,誕生物體的位置,誕生物體的角度);

l  Destroy(消失的物體,消失的時間)

11.18

l  public BoxCollider[] house;

void Start () {

house = GetComponentsInChildren<BoxCollider> ();

//擷取自己及子級含有BoxCollider元件的物體

}

l  if (Input.GetMouseButtonDown (0) && Time.time >= nextTime)

       nextTime = Time.time + 2;//過2秒執行一次效果

l  gameObject.AddComponent("Rigidbody"); //添加元件

l  transform.LookAt (enemyFirstPos);//Z軸朝向enemyFirstPos(Vector3)

l  Vector3.Distance (transform.position, first.position)//判斷距離

l  guiTexture.pixelInset=newRect (Screen.width/2,Screen.height/2,Screen.width*0.1f,Screen.height*0.1f);

//寬度與螢幕比對

11.19

自動尋路

l  制作步驟:

  1. 1.      确定需要尋路的物體,并添加元件
  2. 2.      将場景中靜止的物體設定靜态static
  3. 3.      給需要尋路的物體添加腳本

public Transform target;

void Update () {

        GetComponent<NavMeshAgent>().SetDestination (target.position);

  }

  1. 4.      到Window中找到
  2. 5.      Bake

l  屬性分别為:

尋路物體的外層碰撞半徑

尋路物體的速度

尋路物體的加速度

尋路物體的角速度(檢視效果時:注意物體面向的角度)

尋路物體與目标物的停止距離

尋路物體的外層碰撞高度

尋路物體的外層碰撞高度位置

l  自動尋路區分層

  1. 1.      在尋路視窗添加層
  1. 2.      選中需要添加尋路層的物體,選擇到相應的層
  1. 3.      Bake
  2. 4.      将需要自動尋路的物體選擇可以行走的層

l  每次從初始動畫開始播放

l  停止播放動畫

animation.Stop("run");

l  數值轉成字元串

guiText.text = score.ToString();

l  血條

       public GUITexture blood;

void Update () {

              blood.pixelInset = new Rect(blood.pixelInset.x,blood.pixelInset.y,

                                                                           nowBlood/maxBlood*myGuiTextureWidth,blood.pixelInset.height);}

l  切換場景

             if (firstEnemyPos <= 5) {

                    nowBlood -= 5.0f;

                    if(nowBlood <= 0){

                           nowBlood = 0;

//                        Application.LoadLevel("GameOver"); //一方法

                           Application.LoadLevel(1);//切換場景// 二方法

                    }

               }

               注意:不要忘記将場景檔案拖到釋出視窗

11.20

l  自動尋路藍色區域烘焙屬性

                  尋路藍色區域與障礙物之間半徑

  尋路藍色區域與地面的高度

  尋路藍色區域烘焙最大高度

  尋路藍色區域烘焙最大台階高度

11.21

l  階段項目

l  資源導出

如:模型,選擇模型->右鍵選擇selectDependencies

11.26

關節

鉸鍊關節

固定關節

彈簧關節

OnJointBreak()關節斷開時調用

OnTriggerEnter。。。觸發器

OnCollisionEnter.. 碰撞器

Unity播放視訊

  1. 1.       必須安裝QuickTime播放器
  2. 2.       影片格式不能是FLV格式

播放視訊MovieTexture

        public MovieTexture movTexture;

        void Start() {

               renderer.material.mainTexture = movTexture;

               movTexture.Play();

        }

11.28

配環境:機關調成米,自動儲存的數量及時間,max點的大小

l  Alt + 滑鼠中鍵 旋轉

Alt + W 視窗最大/最小化

一直按住Shift鍵  複制

Z 快速将物體到螢幕中心顯示

F4 線框顯示

X 顯示/隐藏坐标位置

l  吸附 , 點吸附

l  鎖定角度 ,

l  調整坐标位置 -> -> 調節到需要的位置即可

l  選中  -> 加線

l  選中  -> 兩點之間加線

l  選中 -> 擠出

l   不連續一圈線

 連續一圈線

l  删除線 倒退鍵(但點還保留在模型上)

删除點跟線 Ctrl + 倒退鍵(點跟線都删除)

l  補面:選擇 ->

l  鏡像

l  打組是  取消是Ungroup

Attach是 取消是

l  打組Group與Attach差別

Group打組後在unity顯示是

Attach在unity中顯示是

12.1

Max貼圖(分UV)

先找到 ->U…UVW

給物體棋盤格->快捷鍵M(調到材質球)-> 點選選擇->找到 -> 設定圖檔重複倍數

将棋盤格材質球給到物體上

  ->

法線貼圖(凹凸貼圖)

12.2

Shader應用

CubeMap

1. 将物體的shader更改為

2. 建立CubeMap

3. 将CubeMap指認到相應位置

4. 選擇CubeMap到 -> 找到腳本應用即可

5. 建立腳本RenderCubemapWizard,放到Project視窗中即可,注意腳本中

@MenuItem("GameObject/Render into Cubemap"),是指在GameObject找到Render into Cubemap

RenderFromPosition,是指需要反射的物體

CubeMap,是指幫助反射第二步建立的CubeMap

12.8

Network

用戶端  伺服器

背景實時運作

 ->

l  [RPC]

//接收消息(伺服器,用戶端隻要帶有[RPC]辨別,即可互相接受消息)

void MyMessage (string myMessage02,NetworkMessageInfo info)

{

      message += "\n" + "發送者" + info.sender + myMessage02;

}

調用MyMessage方法

networkView.RPC("MyMessage",RPCMode.AllBuffered,傳入的資訊); 

l  使用RPC調用網絡請求必須添加元件NetworkView

12.10 NGUI

l   

1. 制作Sprite(精靈)

2. 到NGUI中Great->Sprite

3. 精靈顯示樣式,Filled為填充樣式

此選項可制作效果,調整參數

若向反向旋轉

l   

1. 制作圖集,點選New,建立新圖集

2. 選擇圖檔

3. 點選Creat

l  注意血條制作 制作精靈,并在此選項中   

選到,調整FillAmount數值

l  如何将Sprite形成按鈕?

    添加元件

l  如果想讓按鈕有事件,必須添加碰撞,BoxCollider

     注意将BoxCollider勾選

l  想讓Lable随着按鈕範圍始終填充狀态

選測Anchors将Target選擇你要綁定到的物體

l  若将整個按鈕與螢幕位置分辨率比對,再将sprite的Anchors下的Target選擇為UIRoot

補充:若在Android平台釋出出現SkyBox像素不清晰,選擇到相應圖檔,将圖檔設定成

l  NGUI如何支援中文,制作NGUI字型集

一方法:

1. 建立空物體,添加UIFont元件

2.

将FontType設定為Dynamic

在TTF Font添加字型

3. 然後将空物體形成預置物(形成NGUI字型集)

4. 到UILable屬性中 點選Font

選擇剛才制作的字型即可。

二方法:直接更改屬性 ,将原來NGUI選項選成Unity,将需要的字型拖到後方即可。

l   

九宮格

用于NGUI優化,隻用一張圖的某一部分像素,但即使放大也不影響清晰度

選擇Sprite到Edit

調節Border選項,選擇圖檔中需要的像素部分, -> 傳回到Sprite

-> 注意将sprite的Type設定成Sliced

l  滑動效果

1. 建立sprite,建立

2. 将sprite添加

3. 将 與sprite打組, 為父級

4. 注意将 拖到sprite屬性 中

l  延伸->在按鈕滑動效果添加sprite ,sprite與 大小一緻,在sprite範圍内也可以實作滑動效果

将sprite同樣添加 元件即可。

注意:深度值

12.11

l Animation

Mecanim

Avater(Mecanim可識别骨骼的辨別)

Retargeting(動畫的互相應用)

AvaterMask(骨骼遮罩)

    Weight 權重

    權重是指某個動畫層在整個動畫中的影響,

    若權重值為1則此層動畫将與整個動畫融合

    若權重值為0則此層動畫與整個動畫完全不融合

12.13

l  Unity 2D

将圖檔放到項目管理視窗中,更改圖檔格式為Sprite

如果精靈需要切割成多張,将SpriteMode更改為Multiple

如果隻是一張精靈,将SpriteMode設定為Single

l  2D動畫

将需要結合在一起形成2D動畫的精靈,選中拖到場景視窗中,會有視窗彈出,提醒儲存動畫,将動畫儲存即可形成2D動畫。

注意:

若需要精靈形成觸發事件,則添加2D碰撞,2D剛體,并且2D剛體中

不要将IsKinematic勾選,否則觸發事件不會形成。

若完全不需要重力,将GravityScale設定為0.