多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 該怎么樣用C++來實現類Unity3d的AddComponent

該怎么樣用C++來實現類Unity3d的AddComponent

來源:程序員人生   發布時間:2015-04-15 09:08:25 閱讀次數:3478次

Unity3d 愈來愈完善,朝著它學習的人也愈來愈多。1是由于Unity3d是1整套開發工具,使用起來簡單快捷。2是 Mono C#的快速開發上手簡單。


在Unity編輯器中,添加1個GameObject , 然后把1個繼承自MonoBehavior的腳本拖到GameObject上,便可對GameObject進行操作。或在代碼中new 1個GameObject,然后用AddComponet 掛載1個腳本到GameObject上。


AddComponet 這個函數,可以通過傳遞 String 來實例化1個類。該如何用C++來實現類似的功能呢?


首先介紹1下Unity 的1些原理:

(1) 我們編寫1個類繼承自MonoBehavior ,然后添加 Start 、Update 這些函數。但是這些函數實際上是私有的,其實不是從MonoBehavior中繼承而來,那這幾個函數是在哪里調用的?

Unity中通過反射來判斷1個類中有無對應的函數,引自知乎中的1個回答:


Unity的確是通過反射來調用腳本的方法的,并且這1進程會在運行時不停對所有MonoBehaviour遍歷進行。 Unity之所以統1地使用這1套固定的函數命名方案,便于明確地劃出了每一個函數需要做些甚么。 這樣做的目的我猜想是有益用保存腳本的靈活性。 這類做法被慣稱為“事件機制”,1旦某個腳本被履行完成以后,它的控制權會重新回到調度管理處,可以輕松地再去履行下1個, 并且也能在運行時通過反射方式讓其它腳本使用Component.SendMessage進行調用。 如果采取了抽象方式讓子類去實現這樣的方法,那末對Unity本身的對象管理是沒有任何好處的,并且對具有多個腳本組件的對象來講,保護本錢不但增加了, 還可能讓腳本之間的管理變得混亂。 使用反射或許會丟失1些性能,但卻能讓每一個不同的MonoBehaviour之間看起來都是獨立的,只需要在它提供的幾個內置方法中關注自己的邏輯就能夠了。

那 C++ 呢?C++判斷類是不是有某個函數不好弄,所以還是采取繼承的方式來簡單實現 AddComponet 。

這類方法的關鍵就是如何使用類名來創建類實例


其中1種方式就是 , 讓通過類名實例化的類 繼承自 基類 ,然后通過靜態函數在程序最開始運行的時候,向基類注冊,然后在調用 AddComponet 的時候,通過基類的函數在最開始注冊的子類中尋覓是不是有對應名字的子類,如果有的話就實例化子類。


終究簡單實現Unity3d中的AddComponet 函數。

int main() { GameObject* obj=new GameObject("Cube"); NewMonoBehaviour* newmono=(NewMonoBehaviour*)obj->AddComponent("NewMonoBehaviour"); MyMonoBehaviour* mymono=(MyMonoBehaviour*)obj->AddComponent("MyMonoBehaviour"); for (int i=0;i<obj->m_componentVec.size();i++) { std::pair<string,Component*> compmap=obj->m_componentVec[i]; MonoBehaviour* mono=(MonoBehaviour*)compmap.second; mono->Awake(); } system("pause"); return 0; }

代碼下載:

http://pan.baidu.com/s/1i3rcYPZ




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本乱人伦片中文三区 | 国产精品性| 2020年国产一国产一级毛卡片 | 久久精品国产第一区二区 | 国产一二三区精品 | 91亚洲区国产区精品区 | 欧美黑人性受xxxx喷水 | 国产一区二区三区高清 | 亚洲午夜伦理 | 亚洲肥妇 | 日本一区二区视频在线观看 | 久久精品国产精品亚洲精品 | 性xxxxx视频| 欧美16一17sex性hd | 99一级毛片 | 伊人免费视频网 | 亚洲人成网站在线播放观看 | 久久成人精品免费播放 | 中文一区在线 | 久久精品无遮挡一级毛片 | 欧美性猛交xxxx乱大交高清 | 狠狠插网站 | 69视频在线观看高清免费 | 久久久精品成人免费看 | 国产v在线播放 | 女人与zzzxxxx0oo0| 国产一区二区高清在线 | 日韩最新视频一区二区三 | 欧美日韩亚洲一区二区 | 精品三级视频 | 国产中文字幕在线播放 | 国产欧美国产精品第一区 | 高清欧美一区二区三区 | 中文字幕久久久久一区 | 精品视频在线观看免费 | 亚洲成在人线久久综合 | 国产精品乱码免费一区二区 | 亚洲一区二区三区久久精品 | 日本中文字幕永久在线 | 国产永久视频 | 亚洲视频在线观看免费 |