個人網(wǎng)站整站源碼下載阜新網(wǎng)絡(luò)推廣
文章目錄
- 一、Unity游戲?qū)ο蠛徒M件的本質(zhì)
- 1、開發(fā)游戲的本質(zhì)
- 2、萬物之根本——空對象
- 2.1 什么是空對象?
- 2.2 創(chuàng)建空對象
- 3、Unity游戲?qū)ο蟮谋举|(zhì)
- 4、 transform組件
- 4.1 transform組件的重要性
- 4.2 修改transform的值
- 4.4 **Transform的作用**
- 4.3 重置transform的值
- 5、總結(jié)
- 二、反射機(jī)制和游戲場景
- 1、知識回顧——C# 的反射
- 2、Unity中的反射機(jī)制
- 2.1 **什么是反射?**
- 2.2 **為什么需要反射?**
- 3、反射機(jī)制的應(yīng)用
- 3.1 **為GameObject添加腳本**
- 3.2 **Inspector面板的操作**
- 3.3 場景文件
- 三、總結(jié)
- 1、**Unity的工作機(jī)制**
- 2、**Unity的本質(zhì)**
- 專欄推薦
- 完結(jié)
一、Unity游戲?qū)ο蠛徒M件的本質(zhì)
1、開發(fā)游戲的本質(zhì)
開發(fā)游戲的本質(zhì)其實(shí)可以理解為:我們開發(fā)者就像導(dǎo)演
,Scence場景視圖就像是舞臺
,里面有各種演員
(對象),我們給每個演員分配劇本
(腳本/組件),這些演員按導(dǎo)演給定的劇本在舞臺上表演,最后通過相機(jī)拍攝下這部戲(游戲
),給玩家觀看(玩
)
2、萬物之根本——空對象
2.1 什么是空對象?
空對象(Empty Object
)是Unity中最基本的游戲?qū)ο?#xff0c;它不包含任何預(yù)設(shè)的組件,僅有一個 Transform
組件。你可以把它想象成一個沒有特定功能的容器或節(jié)點(diǎn)。
GameObject
是Unity提供的一個基礎(chǔ)類,所有的游戲?qū)ο蠖际腔谒?。你可以?GameObject
想象成一個沒有劇本的演員,它可以是任何東西:圖片、模型、音效、攝像機(jī)等等。它本身沒有什么特別的功能,但可以通過掛載不同的組件(如腳本)來實(shí)現(xiàn)各種行為。
2.2 創(chuàng)建空對象
在層級窗口(Hierarchy
)中右鍵點(diǎn)擊,選擇 Create Empty 可以創(chuàng)建一個空對象。
3、Unity游戲?qū)ο蟮谋举|(zhì)
在層級窗口右鍵可以創(chuàng)建不同的對象,這些不同對象其實(shí)相當(dāng)于是unity做好的一個個預(yù)設(shè)
其實(shí)本質(zhì)就是一個空對象+對應(yīng)的組件,然后就能讓它扮演對應(yīng)的角色
其實(shí)之所以場景上的這些對象能表現(xiàn)出不同的狀態(tài),其實(shí)就是因?yàn)樗鼈兩砩蠏燧d了不同的腳本(組件),這些腳本就決定了它們扮演的角色。
比如攝像機(jī),并不是說攝像機(jī)對象與生俱來就是攝像機(jī),而是因?yàn)樗麙燧d了Camera組件而已。
比如,我們完全可以自己創(chuàng)建一個攝像機(jī),不使用unity的預(yù)設(shè)
新建空物體,改名為新攝像機(jī)
添加Camera組件
這樣我們就通過自己添加組件的方式,添加了一個攝像機(jī)。
其它對象同理,比如燈光,就是添加了Light組件,它才是燈光。
4、 transform組件
4.1 transform組件的重要性
每個游戲?qū)ο蠖急仨氂幸粋€ Transform 組件,它記錄了對象在世界中的位置(Position)、旋轉(zhuǎn)(Rotation)和縮放(Scale)信息。
前面說了空對象是萬物之根本。我們可以右鍵創(chuàng)建一個空對象看看。
可以看到一個對象一定要有一個位置信息,帶入現(xiàn)實(shí),如果一個東西沒有位置,那么他就沒有任何意義了,相當(dāng)于根本就不存在,所以transform組件是不可或缺的。
4.2 修改transform的值
我們可以直接在面板上修改tranform的數(shù)據(jù),來實(shí)現(xiàn)對象的移動、旋轉(zhuǎn)和縮放。
其實(shí)前面在場景視圖修改物體的移動、旋轉(zhuǎn)和縮放的本質(zhì),其實(shí)就是間接的修改tranform面板上的數(shù)據(jù)。
注意
:如果你在運(yùn)行時修改了tranform數(shù)據(jù),比如旋轉(zhuǎn)、縮放等等,游戲一旦結(jié)束運(yùn)行,數(shù)據(jù)并不會保留。一般我們?nèi)绻\(yùn)行時修改了數(shù)據(jù),要在結(jié)束運(yùn)行前點(diǎn)擊復(fù)制數(shù)據(jù)內(nèi)容,結(jié)束運(yùn)行再粘貼上去。
4.4 Transform的作用
每個 GameObject
都有一個 Transform
組件,它就像是演員的劇本,告訴演員在哪里站、如何轉(zhuǎn)、怎么縮放。Transform
記錄了物體的位置、旋轉(zhuǎn)和縮放信息,使得我們可以精確控制它們在3D空間中的表現(xiàn)。
4.3 重置transform的值
unity提供快速重置transform的值方案,點(diǎn)擊右邊上角三個點(diǎn),點(diǎn)擊重置
即可
5、總結(jié)
- 空對象 是構(gòu)建復(fù)雜場景的基礎(chǔ),可以用作組織工具或功能載體。
- 組件 決定了游戲?qū)ο蟮木唧w行為和外觀,通過組合不同組件可以實(shí)現(xiàn)復(fù)雜功能。
- Transform 組件是每個游戲?qū)ο蟛豢苫蛉钡囊徊糠?#xff0c;它控制著對象的空間變換。
二、反射機(jī)制和游戲場景
1、知識回顧——C# 的反射
簡單說一下,C# 反射 (Reflection
) 是一種強(qiáng)大的機(jī)制,它允許程序在運(yùn)行時動態(tài)地查看和操作程序的元數(shù)據(jù)。通過反射,我們可以在不事先知道類型信息的情況下,獲取類型信息并操作類型中的成員(如類、方法、屬性、字段等)。
對反射不了解的,可以回去看我C#篇有具體介紹反射:【從零開始入門unity游戲開發(fā)之——C#篇39】C#反射知識
2、Unity中的反射機(jī)制
2.1 什么是反射?
想象一下,你在玩一個角色扮演游戲(RPG),你可以隨時查看自己的狀態(tài)、裝備、技能等信息。反射就像是在游戲中提供了一個“開發(fā)者模式”,讓你可以在程序運(yùn)行時查看和操作其他對象的信息,比如類、方法、字段等。
2.2 為什么需要反射?
在Unity中,反射幫助我們動態(tài)地創(chuàng)建和管理對象。比如,你可以通過腳本為游戲?qū)ο筇砑有碌墓δ?#xff0c;而不需要每次都手動去編寫代碼。這就像給游戲中的角色穿上不同的裝備或賦予他們新的技能一樣靈活。
3、反射機(jī)制的應(yīng)用
3.1 為GameObject添加腳本
當(dāng)你在Unity編輯器中將一個C#腳本拖拽到某個 GameObject
上時,Unity實(shí)際上是在背后使用反射機(jī)制將這個腳本實(shí)例化并與 GameObject
關(guān)聯(lián)起來。這就像是給演員分配了一部新的劇本,告訴他接下來要做什么。
3.2 Inspector面板的操作
當(dāng)你在Inspector面板中修改 Transform
或者其他組件的屬性時,Unity也在使用反射來獲取和設(shè)置這些屬性值。這就像導(dǎo)演在后臺調(diào)整演員的動作和臺詞一樣。
3.3 場景文件
前面說了,Unity中的游戲場景本質(zhì)上是一個配置文件。它記錄了場景中所有對象及其屬性信息。當(dāng)你加載一個場景時,Unity會讀取這個文件,并通過反射機(jī)制創(chuàng)建相應(yīng)的 GameObject
和關(guān)聯(lián)的腳本。
三、總結(jié)
1、Unity的工作機(jī)制
Unity的工作原理就像是在一臺虛擬的劇院里導(dǎo)演一場戲劇。GameObject
和 Transform
是必不可少的關(guān)鍵因素,相當(dāng)于舞臺上的演員和他們的劇本。通過反射機(jī)制,Unity能夠動態(tài)地創(chuàng)建這些演員并賦予他們不同的劇本(C#腳本),使每個演員都能按照預(yù)定的邏輯行動,最終呈現(xiàn)出豐富多彩的游戲世界。
2、Unity的本質(zhì)
Unity利用反射動態(tài)創(chuàng)建 GameObject
對象,并在其上關(guān)聯(lián)各種C#腳本對象。這使得不同的 GameObject
對象可以各司其職,扮演好自己的角色。根據(jù)Unity提供的以及我們編寫的劇本(C#腳本),一出精彩的游戲戲劇就此上演。
專欄推薦
地址 |
---|
【從零開始入門unity游戲開發(fā)之——C#篇】 |
【從零開始入門unity游戲開發(fā)之——unity篇】 |
【制作100個Unity游戲】 |
【推薦100個unity插件】 |
【實(shí)現(xiàn)100個unity特效】 |
【unity框架開發(fā)】 |
完結(jié)
贈人玫瑰,手有余香!如果文章內(nèi)容對你有所幫助,請不要吝嗇你的點(diǎn)贊評論和關(guān)注
,你的每一次支持
都是我不斷創(chuàng)作的最大動力。當(dāng)然如果你發(fā)現(xiàn)了文章中存在錯誤
或者有更好的解決方法
,也歡迎評論私信告訴我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奮斗的開發(fā)者,閑暇之余,邊學(xué)習(xí)邊記錄分享,站在巨人的肩膀上,通過學(xué)習(xí)前輩們的經(jīng)驗(yàn)總是會給我很多幫助和啟發(fā)!如果你遇到任何問題,也歡迎你評論私信或者加群找我, 雖然有些問題我也不一定會,但是我會查閱各方資料,爭取給出最好的建議,希望可以幫助更多想學(xué)編程的人,共勉~