91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D腳印2——從腳本開始

發布時間:2020-02-21 09:31:23 來源:網絡 閱讀:246 作者:wyb10a10 欄目:游戲開發
按照我之前的慣性思維,這時候應該拋出一個問題,是不是可以不通過界面,直接new一個腳本出來,呵呵(自嘲,這種想法比new一個Scene更不實際,雖然可以實現~,通過寫文件在代碼里面寫一個腳本,然后動態加載進來)
 
比起new一個腳本,我覺得還是了解一下怎樣寫一個腳本吧
 
MonoBehaviour是所有腳本的基類,所有要掛載到GameObject之上的腳本,都需要繼承這個類,js腳本自動繼承這個類,C#需要顯式地繼承MonoBehaviour,MonoBehaviour提供了一系列函數給我們重寫,這里記錄一下最常用的一些函數
 
三個Update:
 
Update 在每一幀更新,和游戲邏輯相關的代碼,對游戲對象進行旋轉,平移的代碼在這里實現
 
LateUpdate 在每一幀的Update調用完之后被調用
 
FixedUpdate 按照固定的時間間隔調用,不受幀率變化的影響,物理引擎相關的代碼在這里實現,例如對對象施加力
 
Awake 在腳本實例被載入的時候調用
 
Start 在第一次Update之前調用
 
Reset 在對象被重置的時候調用
 
OnGUI 在渲染和處理GUI事件時被調用
 
OnDestroy 在對象被銷毀的時候調用
 
其他一些OnXXX函數在此不作介紹了,后面自然會用到的
 
這個網頁簡單介紹了MonoBehaviour這個類的所有函數,可重寫方法,成員變量
http://game.ceeger.com/Script/MonoBehaviour/MonoBehaviour.html
 
MonoBehaviour還有其他一些有意思的東西:
 
useGUILayout,當你不使用GUI.Window和GUILayout的時候,果斷設置為false,這個玩意兒默認是開啟的,設置為false最好在Awake回調里面進行設置
 
Invoke系列方法:
 
Invoke系列方法相當于計時器,在指定的時間點上調用指定的函數
 
void Invoke(string methodName, float time);        //在time秒后調用methodName
void Invoke(string methodName, float time, float repeatRate);     //在time秒后開始以repeatRate秒為間隔重復調用方法
void IsInvoking(string methodName);        //判斷某個方法是否在等待調用
void CancelInvoke();        //取消所有的計時器調用
void CancelInvoke(string methodName)        //取消某個計時器調用
 
如果我想Invoke一個帶參數的方法,咋整呢?
 
Coroutine系列方法:
 
協同方法相當于多線程吧,可以讓程序同時做多件事情,通過StartCoroutine傳入一個函數,將異步執行這個函數,StartCoroutine有三種用法,對應幾種不同類型的參數。需要注意的一個東西是yield,這是一個特殊的返回類型,它確保函數從yield語句的下一行繼續執行。
 
yield是一種特殊的return,就像c++里面的sleep,短暫的sleep可以交出線程的時間片,讓其他線程先執行,而yield會返回到父類繼續執行,yield后面可以返回一個null,也可以返回一個特殊的函數,當函數成立的時候,才執行接下來的語句(函數包括WaitForSeconds,WaitForFixedUpdate,Coroutine,StartCoroutine這四個繼承于YieldInstruction的指令)
 
yield return null;        //讓出時間片,讓父進程先執行
 
yield return new WaitForSeconds(1);            //在程序執行到1秒時才執行接下來的代碼
 
yield return new WaitForFixedUpdate();        //在FixedUpdate調用之后才執行接下來的代碼
 
yield return new WaitForEndOfFrame();        //在這一幀結束之后才執行接下來的代碼
 
yield return new StartCoroutine("xxx");        //在xxx協同執行完之后才執行接下來的代碼
 
StartCoroutine的三種調用方法:
 
StartCoroutine("Coroutine0", 1);
StartCoroutine("Coroutine1");
StartCoroutine(Coroutine2());
 
//帶一個object參數,返回值無視
int Coroutine0(int i)
{
print(i);
return i;
}
 
//不帶參數
void Coroutine1()
{
print("Coroutine test");
}
 
//調用yield返回IEnumerator類型的函數,可帶任意參數
IEnumerator Coroutine2()
{
yield return new WaitForSeconds(2);
print("WaitForSeconds" + Time.time);
}
 
另外,有StopCoroutine和StopAllCoroutines兩個函數用于停止協同函數

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

来安县| 永德县| 剑河县| 宾川县| 城步| 怀仁县| 南和县| 南澳县| 青岛市| 额济纳旗| 新巴尔虎左旗| 灌阳县| 三门县| 镇巴县| 新乡市| 财经| 东阿县| 神池县| 揭西县| 馆陶县| 湘阴县| 甘孜| 遂川县| 新邵县| 青铜峡市| 忻州市| 沭阳县| 安多县| 衡水市| 赣榆县| 磐安县| 长沙市| 广河县| 万源市| 鹿邑县| 许昌市| 龙江县| 应用必备| 巴南区| 阳泉市| 都匀市|