日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

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




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 最新国产精品 | 日韩欧美精品一区 | 国产一区二区精品在线 | 欧美一级片在线看 | 欧美精品福利视频 | 亚洲精品一区久久久久久 | 日韩在线视频中文字幕 | 一区二区福利 | 国产欧美精品一区aⅴ影院 99爱在线视频 | 福利视频一区二区三区 | 99在线免费观看 | 亚洲三级网站 | 国产激情视频 | 国产69久久精品成人看 | 国产极品免费 | 欧美日韩免费 | 国产伦精品一区二区三 | 欧美午夜精品一区二区三区 | 久久久综合av | 中文字幕一区二区三区日韩精品 | 久久精品网站免费观看 | 97久久久| 国产不卡视频一区二区三区 | 日韩欧美黄色 | 亚洲精品一区二区在线观看 | 福利视频一区二区三区 | 久久99精品久久久久久久久久久久 | www久久| 黄色一级毛片 | 美女久久久久 | aaaaaa视频 | 久久久久久毛片 | 日韩a级毛片免费观看久久 精品一区二区在线播放 | 亚洲欧美日韩高清 | 国产在线成人 | 日韩精品视频在线播放 | 国产综合一区二区 | 在线播放国产一区二区三区 | 在线中文字幕av | 久久com| 色诱亚洲精品久久久久久 |