腳本

腳本用于響應(yīng)玩家輸入捡鱼、事件響應(yīng)拐叉、生成生動(dòng)的效果、甚至是構(gòu)建自定義AI萄焦。



腳本綜述

介紹Object怎樣受到腳本的控制控轿,以及Unity特征和Mono runtime的關(guān)系。


創(chuàng)建和應(yīng)用腳本

GameObject是被Components控制的拂封,雖然Unity內(nèi)置的Components已經(jīng)很好了茬射,但你會(huì)發(fā)現(xiàn)我們還是需要用腳本創(chuàng)建自己的Components。

有2種語言冒签,C#和UntiyScript在抛。

怎么創(chuàng)建腳本呢?

Assets > Create > C# Script

創(chuàng)建好的腳本是什么樣的呢萧恕?

默認(rèn)有2個(gè)函數(shù)刚梭,Start()和Update()。

怎么用這個(gè)腳本呢廊鸥?

把它拖到Object上望浩,作為一個(gè)Components。


變量和檢視面板

你可以定義一個(gè)public變量惰说,并在檢視面板上看到它,還可以給它賦值缘回。


用Components控制Object

一般我們可以通過編輯器控制Object的屬性吆视,但這是靜態(tài)的,用腳本的不同在于可以動(dòng)態(tài)的控制Object的屬性酥宴。

怎么訪問Component呢啦吧?

用函數(shù)GetComponent。

怎么訪問其他Object呢拙寡?

創(chuàng)建一個(gè)public的GameObject變量授滓,把其他的Object拖動(dòng)到檢視面板的public變量處。(Transform同理)

怎么找到Child Objects肆糕?

Transform.Find般堆。

怎么通過Name或者Tag找到Object?

GameObject.Find诚啃,GameObject.FindWithTag淮摔,GameObject.FindGameObjectsWithTag


事件函數(shù)

Unity通過事件函數(shù)來進(jìn)行控制始赎,比如Start和Update和橙,還有更多的函數(shù)可供應(yīng)用仔燕。

有哪些一般的更新事件?

Update()魔招,F(xiàn)ixedUpdate()晰搀,LateUpdate()。

有哪些初始化事件办斑?

Start厕隧,Awake。

有哪些GUI事件俄周?

OnGUI吁讨,OnMouseOver,OnMouseDown峦朗。

有哪些物理事件建丧?

OnCollisionEnterOnCollisionStay波势,OnCollisionExit翎朱,OnTriggerEnterOnTriggerStay尺铣,OnTriggerExit拴曲。


時(shí)間和幀速率的管理

兩次Update調(diào)用之間的時(shí)間長度不是恒定的。

所以如果幀率是10毫秒凛忿,那么每秒U(xiǎn)pdate100次澈灼,如果幀率是25毫秒,那么每秒U(xiǎn)pdate40次店溢,就會(huì)有問題叁熔。

這時(shí),我們就要用到Time.deltaTime床牧。(distancePerSecond * Time.deltaTime)

什么是Fixed Timestep荣回?

Unity的物理系統(tǒng)需要固定的時(shí)間步來進(jìn)行精準(zhǔn)的模擬。(Time Manager戈咳,Time.fixedDeltaTime

什么是Maximum Allowed Timestep心软?

簡單來說,當(dāng)Fixed Timestep引起物理系統(tǒng)運(yùn)算變慢時(shí)著蛙,要用到這個(gè)東西删铃,它在Time Manager里可以設(shè)置。

什么是Time Scale册踩?

就是速率泳姐,1表示正常,0.5表示半速暂吉。

什么是Capture Framerate胖秒?

有時(shí)候我們會(huì)把游戲錄成視頻缎患,錄制過程會(huì)耗費(fèi)大量時(shí)間,就會(huì)用到這個(gè)東西阎肝,設(shè)置它保證游戲的流暢挤渔。


創(chuàng)建和銷毀GameObjects

Instantiate,Destroy


協(xié)同程序

舉個(gè)例子风题,當(dāng)你想把一個(gè)物體慢慢變透明時(shí)判导,不可能在一幀內(nèi)完成它,因?yàn)槟菢泳涂床坏竭^程了沛硅,此時(shí)眼刃,你可以用到協(xié)同程序。

IEnumerator摇肌,yield return擂红,StartCoroutine

它會(huì)單獨(dú)形成一個(gè)函數(shù),返回一次值后围小,把處理權(quán)交還給Unity昵骤,在下次Update時(shí),再把處理權(quán)要過來進(jìn)行下一次處理肯适。


命名空間

防止函數(shù)名稱沖突变秦。

namespace XXX,using XXX框舔。


屬性

放在類蹦玫、函數(shù)等上的,用[ ]括起來的雨饺,表明作用的東西钳垮。


事件函數(shù)的執(zhí)行次序


理解自動(dòng)內(nèi)存管理

我們調(diào)用函數(shù)中的參數(shù),會(huì)把參數(shù)拷貝一份放在存儲(chǔ)器中额港,如果參數(shù)是一些數(shù)字,那么它很小歧焦,沒問題移斩,但如果參數(shù)是Object、array呢绢馍?太大了向瓷,會(huì)很費(fèi)存儲(chǔ)空間,效率也低舰涌,因此猖任,就要用到pointer,它只是記錄了存儲(chǔ)地址瓷耙,只要改變他就好了朱躺。

內(nèi)存管理者會(huì)搜索所有屬于激活狀態(tài)的引用值刁赖,并標(biāo)記它們?yōu)椤盎钪保?dāng)搜索完成時(shí)长搀,把剩余的存儲(chǔ)空間用于隨后的再分配宇弛。這就叫“垃圾回收”。

雖然自動(dòng)處理機(jī)制比手動(dòng)處理機(jī)制強(qiáng)源请,但也需要程序員避免一些錯(cuò)誤做法枪芒。

有2種策略,小內(nèi)存就快速頻繁的回收(每隔多久就回收一次)谁尸,大內(nèi)存就緩慢不頻繁的回收(游戲暫停時(shí)才回收)舅踪。

還有,復(fù)用Objects也是一個(gè)方法良蛮。


平臺(tái)依賴編譯

暫不關(guān)注抽碌。


專用文件夾和腳本編譯命令

Assets

Editor

Editor default resources

Gizmos

Plugins

Resources

Standard Assets

StreamingAssets

腳本的編譯有4個(gè)階段。

編譯中有個(gè)基本原則背镇,在當(dāng)前編譯階段之后才編譯的任何腳本都不能被涉及咬展,在當(dāng)前或早先階段被編譯的腳本都要確保能用。

4個(gè)階段如下:

(表示沒看懂瞒斩,以后補(bǔ)吧)


類函數(shù)

尖括號(hào)破婆,void FuncName(),var obj = GetComponent()胸囱。


腳本限制

主要針對(duì)不同平臺(tái)說的祷舀。


腳本序列化

在Unity引擎中,序列化被用于加載場(chǎng)景烹笔、資源等裳扯。

(現(xiàn)階段看不懂,以后再說吧)


Unity事件

感覺是Unity有一套自己的事件系統(tǒng)谤职,不需要我們自己額外寫什么了饰豺。

UnityEngine.Events


什么是空引用異常?

當(dāng)你想引用一個(gè)不存在的東西時(shí)允蜈,就會(huì)出現(xiàn)空引用異常冤吨。


重要的類

MonoBehaviour

Transform

Rigidbody/Rigidbody2D


矢量食譜

雖然矢量描述起來很簡單,但它在編程過程中很細(xì)微且有巨大的作用饶套。

理解矢量運(yùn)算

加漩蟆、減、乘妓蛮、除怠李。



腳本工具



事件系統(tǒng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捺癞,更是在濱河造成了極大的恐慌夷蚊,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘簇,死亡現(xiàn)場(chǎng)離奇詭異撬码,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)版保,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門呜笑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人彻犁,你說我怎么就攤上這事叫胁。” “怎么了汞幢?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵驼鹅,是天一觀的道長。 經(jīng)常有香客問我森篷,道長输钩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任仲智,我火速辦了婚禮买乃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钓辆。我一直安慰自己剪验,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布前联。 她就那樣靜靜地躺著功戚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪似嗤。 梳的紋絲不亂的頭發(fā)上啸臀,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音烁落,去河邊找鬼壳咕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顽馋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幌羞,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼寸谜,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了属桦?” 一聲冷哼從身側(cè)響起熊痴,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤他爸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后果善,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诊笤,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年巾陕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讨跟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鄙煤,死狀恐怖晾匠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梯刚,我是刑警寧澤凉馆,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站亡资,受9級(jí)特大地震影響澜共,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锥腻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一嗦董、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旷太,春花似錦展懈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睡毒,卻和暖如春来惧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背演顾。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工供搀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钠至。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓葛虐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棉钧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屿脐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Unity工程結(jié)構(gòu): Assets文件夾:存儲(chǔ)工程所需的所有資源文件 Library:工程所需要的所有資源庫(類庫...
    斗魁閱讀 1,856評(píng)論 0 3
  • 創(chuàng)建并運(yùn)行腳本: unity 使用 C# 和 JavaScript 作為腳本語言,在創(chuàng)建一個(gè)腳本時(shí)會(huì)自動(dòng)創(chuàng)建 St...
    Baqun閱讀 3,155評(píng)論 0 5
  • 在Unity中可以同時(shí)創(chuàng)建很多腳本,并且可以分別綁定到不同的游戲?qū)ο笊系乃校鼈兏髯远荚谧约旱纳芷谥羞\(yùn)行万栅。與腳本有...
    無敵的IT熊貓閱讀 888評(píng)論 0 0
  • 喜歡只是一種好感,喜歡她的那一點(diǎn)西疤,那一方面比較好烦粒,愛則是每時(shí)每刻都想看見,連說一句話都是高興的代赁,興奮的扰她,要是對(duì)你關(guān)...
    也許是因?yàn)閻勰惆?/span>閱讀 123評(píng)論 0 1
  • 題目: 1、職場(chǎng)案例: 你最近在工作上遇到了一些困惑管跺,你想讓你的領(lǐng)導(dǎo)給你一些建議义黎。可是你的領(lǐng)導(dǎo)很忙豁跑,很難抽出時(shí)間廉涕,...
    RecZ閱讀 232評(píng)論 0 0