框架的應用(一) 物件池

2021-07-16 06:51:15 字數 840 閱讀 3737

應用場景:

戰爭遊戲中的角色生成和銷毀,因為戰爭遊戲存在大量的生成角色和銷毀角色,所以如何去節約效能很重要,物件池可以解決這個問題

看這一關於生成士兵的**片段:

gameobject go = objpool.instance.ongetobj("soldier1", "prefabs/soldier/");

go.getcomponent().setproperty(i,true);

go.transform.position = warpos.selfcroppos[i].soldierposes[j].position;

go.transform.eulerangles = new vector3(0, 90, 0);

selfroles.add(go.getcomponent());

首先根據傳路徑引數進去物件池函式,然後物件池會根據情況返回乙個我們需要的物件,再給這個物件重置一些基本屬性,這就完成了物件池的出池操作了;

需要注意的是在出池之後如果物件是從池中取出來的(什麼是從池中取出來的參考物件池的**),而不是第一次生成,那麼物件的start函式不會被執行,這時候解決方法應該是onenable,參考這一**片段:

void onenable()

使用場景是特效生成之後需要的銷毀,取出池之後我們應該每次都執行這個協程銷毀,所以應該在onenable實現;

銷毀的**片段:

ienumerator destroyself()

沒什麼特別的地方,進池只要把物件的gameobject傳進去就完事了;

一 物件模型

在ruby程式中,物件僅僅是其大世界的乙個公民而已,除了物件還有其他語言構件,比如類 class 模組 module 以及例項變數 imstance variable 等,元程式設計操控的就是這些語言構件。所有語言構件存在於其中的系統稱為物件模型,它是ruby的靈魂。1 物件由一組例項變數和乙個類的...

物件導向(一) 物件屬性

物件屬性型別 每個物件都是基於乙個引用型別建立的 1.資料屬性 2.訪問器屬性 4個特性 1.configurable 能否delete屬性從而重新定義屬性 能否修改屬性的特性 能否把屬性改為訪問器屬性 2.enumerable 能否用for in迴圈返回屬性 3.writable 能否修改屬性的值...

物件導向(一) 物件屬性

物件屬性型別 每個物件都是基於乙個引用型別建立的 1.資料屬性 2.訪問器屬性 4個特性 1.configurable 能否delete屬性從而重新定義屬性 能否修改屬性的特性 能否把屬性改為訪問器屬性 2.enumerable 能否用for in迴圈返回屬性 3.writable 能否修改屬性的值...