概述:
正文:
研究生命週期,我們不再新建指令碼,我們在enterpanel.cs 和mainpanel.cs中探索。
我們看下圖:
可以看到processmsg、oninit、onopen、onshow、onhide、onclose六個方法。
processmsg 是uikit中的一套模組兒化的訊息機制,解決各個panel之間資料傳遞的發生的高耦合性問題,在後續的篇幅中會有講解。
oninit 則是在 uipanel 所在的 prefab 初始化的時候進行呼叫的,在呼叫 uikit.openpanel 時,只要在 uimgr 中沒有對應的快取介面時,就會呼叫一次 oninit 這個週期方法。可以簡單理解成物件的建構函式或者unity指令碼生命週期中的awake或start.
onshow 與 onhide 是同一對api,用來解決在業務中暫時需要隱藏上一級介面onhide,當下一級頁面關閉onclose時,顯示父介面的情況onshow。這些一些api在我們做一些管理系統的時候經常用到。
onclose方法 是和oninit方法成對兒的api,在介面銷毀的時候處理的一些善後的工作,簡單理解為unity生命週期函式中的ondestroy方法 會物件的析構方法。
相關操作
在mainpanel下新增新的button控制項,命名為btnback,掛載bind元件。
所有的bind元件中的型別是可以選擇的
mainpanel中的節點修改後如下:
頁面效果如果:
更新mainpanel預製體,生成**。
修改mainpanel.cs檔案中的**如下:
using unityengine;
using unityengine.ui;
using qframework;
namespace qframework.example
public partial class mainpanel : uipanel
protected override void oninit(iuidata uidata = null)
/// /// 初始化資料
///
void init());}
protected override void onopen(iuidata uidata = null)
protected override void onshow()
protected override void onhide()
protected override void onclose()
}}
修改enterpanel.cs檔案中的內容如下:
using unityengine;
using unityengine.ui;
using qframework;
namespace qframework.example
public partial class enterpanel : uipanel
protected override void oninit(iuidata uidata = null)
);//隱藏當前的頁面
uikit.hidepanel();
});debug.log("enterpanel oninit");
}protected override void onopen(iuidata uidata = null)
protected override void onshow()
protected override void onhide()
protected override void onclose()
}}
在多次切換進入系統按鈕和返回按鈕後我們看結果
整個過程 enterpanel oninit 只執行一次
uikit.openpanel(uilevel.common);
在兩個紅色舉行框中可以看到mainpanel 被轉殖了3次
在底部紅色框中mainpanel的所有生命週期方法各執行3次和轉殖及銷毀3次吻合
同時enterpanel onhide和enterpanel onshow各執行3次說明enterpanel 被隱藏及顯示各三次
在寫此案例時注意**位置
顯示enterpanel
uikit.showpanel();
隱藏enterpanel
uikit.hidepanel();
【注】
oninit、onopen、onshow 是在unity生命週期方法awake 和start 方法之間
【關注、點讚,收藏】
qq群號:1056320746
Django 框架 django的請求生命週期
概述 首先我們知道http請求及服務端響應中傳輸的所有資料都是字串,同時http請求是無狀態的,可以通過session和cookie來輔助。瀏覽器通過ip和埠及路由方式訪問服務端.在django中,當我們訪問乙個的url時,會通過路由匹配進入相應的html網頁中.django的請求生命週期是指當使用...
Spring框架中的Bean物件的生命週期
從書上可知,spring框架中bean物件有它的生命週期,還包括bean的銷毀。在beanfacotory中獲取的例項是singleton,beanfactory預設每乙個引用來維護乙個例項,對單執行程式來講,並不會有什麼問題,但是多程式來說,就需要你注意執行的安全,可以設定每次在beanfacot...
iOS ViewController生命週期
工作中一直寫viewcontroller,但是對它的生命週期一直沒有乙個比較完整地理解,最近看了幾篇部落格,在這裡對viewconroller的生命週期做乙個總結,一是為了自己學習,二是為了給大家乙個參考,如有錯誤,歡迎指正。1.alloc 建立物件,分配空間 2.init 初始化物件,初始化資料 ...