歡迎來到unity學習、unity培訓、unity企業培訓教育專區,這裏有很多U3D資源、U3D培訓視頻、U3D教程、我們致力於打造業內unity3d培訓、學習第一品牌。
Mono Develop腳本編輯器介紹
Unity3d目前支持三種語言的腳本程序:C#,JavaScript,Boo
三種語言其實效率是相當的,最後都會編譯成Unity3D內置的 中間代碼。目前國內用C#的佔大多數。
注意:
1) 項目運行過程中的修改不會保存
2) 腳本只能依附於遊戲對象或由其他腳本調用才能運行
3) 一個腳本可以放在多個遊戲對象上面,是多個實例
4) 一個腳本的多個實例和其他腳本之間互不干擾
腳本在Project中的顯示名稱不要加cs,類名要和cs名稱一致,所有類繼承自MonoBehaviour。
初始化不要放在構造函數中,而是放到Start()方法中。
放到遊戲對象中的腳本可以在Inspector中修改屬性,get/set寫法屬性不被識別,直接public字段就能當屬性用,不寫修飾符就是私有private
項目工程分層設計
Scenes:存放場景
Scripts:存放腳本
Resources:資源包
Textures:貼圖
Materials:材質
Audios:聲音
Models:模型
VS編譯器
更改默認開發工具:
Edit>preferences>Extemal Tools>Extemel Script Editor>D:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE>devenv.exe>關閉
創建,銷燬,克隆遊戲對象
創建:GrameObject cube =GrameObject.CreatePrimitive(PrimitiveType.Cube):
cube.name=”立方體”;//設定名字
cube.renderer.material.color=Color.red;
克隆:GrameObject obj =(GameObject)Instantiate(cube);
銷燬:Destroy(obj,1)//一秒後銷燬
1、//給遊戲物體添加名爲FoobarScript的腳本
GameObject.AddComponent ("FoobarScript");
2、//給遊戲物體添加剛體
Rigidbody rb = GameObject.AddComponent ("Rigidbody");
3、//給遊戲物體添加球體碰撞器
SphereCollider sc = GameObject.AddComponent ("SphereCollider");
常用核心類:
GambeObject 類
本類爲“遊戲對象”類。場景中所有的遊戲對象都是通過實例化該類來生成的。
1)通過名稱來查找:
GameObject player = new GameObject("Player");
GameObject go=GameObject.Find(“Player”);
2)通過tag標籤獲取單個遊戲對象:
GameObject go=GameObject.FindWithTag(“Player”);
GameObject go=GameObject..FindGameObjectWithTag (“Player”);
3)通過遊戲標籤獲取多組遊戲對象:
GameObject[] go=GameObject.FindGameObjectsWithTag (“Player”);
Time類
屬性:deltaTime
只應該在Update()中使用deltaTime,OnGUI、FiexedUpdate等裏面不要用。
例:
//從3開始向下倒計時。
float a=3.0f;
void Update () {
a-=Time.delatTime;
print(a);
}
//按下A鍵,遊戲物體向左移動;按下D鍵,遊戲物體向右移動
float move_h=0;
if (Input.GetKey (KeyCode.A)) {
move_h-=Time.deltaTime;
}
if (Input.GetKey (KeyCode.D)) {
move_h+=Time.deltaTime;
}
transform.Translate(new Vector3(move_h,0,move_v));
組件引用函數
如果要訪問的組件不屬於常用組件,或者訪問的是遊戲對象上的腳本(腳本屬於自定義組件),可以通過組件引用函數來得到組件的引用。
GetComponent 得到組件
GetComponents 得到組件列表(用於有多個同類型組件的時候)
GetComponentInChildren 得到對象或對象子物體上的組件
ScriptName other = GameObject.GetComponent<ScriptName>();
這個操作比較耗時,把此操作放到Start()中
協調程序(Coroutine)
協同程序,即在主程序運行時同時開啓另一段邏輯處理來協同當前程序的執行。換句話說,開啓協同程序就是開啓一個線程。
在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可開啓一個協同程序,也就是說該方法必須在MonoBehaviour或繼承於MonoBehaviour的類中調用。
使用StartCoroutine(string methodName)可以開啓一個線程
Yield
Yield語句是一種特殊類型的Return(返回)語句,它可以確保函數在下一次被執行時,不是從頭開始,而是從Yield語句處開始。
可以實現將一段程序延遲執行或者將其各個部分分佈在一個時間段內連續執行
例:
void Start () {
print("Start開始");
StartCoroutine(Do());
print("Do調用後");
}
IEnumerator Do(){
print("Do開始");
yield return WaitForSeconds(3.0f);
print("暫停3秒後");
}
輸出的語句爲:
Start開始
Do開始
Do調用後
(3秒之後)暫停3秒後
Random類(隨機數)
float a=Random.value;
int b=Random.Range(0,100) 包括最大和最小
float c=Random.Range(0.0f,1.0f); 包括最小但不包括最大
消息傳遞函數
GameObject.SendMessage:向自身的腳本中發送消息
GameObject.BroadcastMessage:向自身及子物體的腳本中發送消息
GameObject.SendMessageUpwards:向自身及父物體中發送消息
更多精彩情關注:http://www.gopedu.com/