unity 實現簡單的分離


在網上隨便搜一搜資料就可以找到很多關於Mvc ,MVVM,StrangeIoc等有關顯示與數據分離的博客,很多大神也是講的蠻有道理的,但是這些框架理解起來有一定的難度,

 

這時候肯定有人說有現成的框架為什么不用,不用管它怎么實現的知道怎么用就行了,就我個人而言我也想用,比如去年unity開發者大會上unity開發者提出的uframe這個插件,我也曾具

體查過這個插件,大家對他的評價還是肯定的,但是國內用這個插件的人不是很多,並且全國所有網站上的文章有關於uframe的只有一個人寫過,我也按照博客上寫的具體進行操作了,可是

並沒有實現成功,可能是的版本問題,也可能是版本的問題...所以我就有了這篇博客,一篇關於事件在u3d中的一些應用

 

下面簡單的說一些我的思路!

 

ui的事件所有事件觸發全部在放在一個類里面,類似的聲音管理的全部放在一個類里,在外部類ui事件觸發的地方只需要調用事件即可,在其他地方綁定自己的事件

這樣簡單的邏輯就可以實現不用管理事件處理的內容

 

首先寫一個類定義所有的ui委托(也可以寫在其它類的外部)

 1 /// <summary>
 2 /// 無參數的ui事件
 3 /// </summary>
 4 public delegate void UIDelegateNoParameters();
 5 
 6 /// <summary>
 7 /// 有參數的ui事件
 8 /// </summary>
 9 /// <typeparam name="T"></typeparam>
10 /// <param name="t"></param>
11 public delegate void UIDelegate<T>(T t);

 

下面是委托實現的單例類,用來定義事件和調用事件的函數

 1 using UnityEngine;
 2 
 3 /// <summary>
 4 /// ui所有的事件
 5 /// </summary>
 6 public class UIEvent
 7 {
 8     #region 類的單例
 9     private UIEvent()
10     { }
11     private static UIEvent _instance;
12     public static UIEvent GetInstance
13     {
14         get
15         {
16             if (_instance == null)
17             {
18                    _instance = new UIEvent();
19             }
20 
21             return _instance;
22         }
23 
24     }
25     #endregion
26 
27     #region 第一個界面button事件
28     public event UIDelegateNoParameters ButDebug;
29     public void ButDebugImplement()
30     {
31         if (ButDebug != null)
32         {
33             ButDebug();
34         }
35         else
36         {
37             Debug.Log("事件為空");
38         }
39     }
40     #endregion
41 }

 

事件已經定義了,我們再來在場景里面定義一個button(先簡單的實現)

 

按鈕的怎么觸發就不用講了吧,不會的可以在下面評論或者去百度谷歌都是可以的

 

下面來看事件的觸發

 

1  public void OnClck()
2     {
3             UIEvent.GetInstance.ButDebugImplement();
4     }

 

然后就是綁定事件了

 1 void Start () 
 2     {
 3         UIEvent.GetInstance.ButDebug += ck;
 4     }
 5     
 6     private void ck()
 7     {
 8 
 9         Debug.Log("執行了");
10     }

 

代碼就是簡單的打印了一句話

 

現在我們來整理一下思路:首先我們定義了事件,,然后給事件綁定了函數.點擊按鈕的觸發了事件

 

思路so easy,,,不出意外的話最后應該是會打印出 執行了 這句話

 

那我們來看一下結果

 

 

結果很明顯和我們想的一樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM