日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

Unity 3D观察者设计模式-C#委托和事件的运用

發布時間:2024/1/17 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity 3D观察者设计模式-C#委托和事件的运用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C#觀察者設計模式


本文提供全流程,中文翻譯。

Chinar 堅持將簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例)



Chinar —— 心分享、心創新!

助力快速理解 觀察者設計模式

為新手節省寶貴的時間,避免采坑!


Chinar 教程效果:

刑警警察叔叔注視了一下四周 穿黑色衣服的:神偷 - 跑了 穿白色衣服的:笨賊 - 跑了 穿平常色衣服的:平民 - 跑了 穿紅色衣服的:強盜 - 跑了

  • 1
    • Police —— 警察類
  • 2
    • Thief —— 小偷
  • 3
    • Main —— 主入口
  • 4
    • Console —— 控制臺輸出
  • 支持
    • May Be —— 搞開發,總有一天要做的事!


全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1

Police —— 警察類


這個類用來表示警察

當警察看向四周的時候,所有事件下的訂閱者,都會被調用到

也可以理解為廣播:當警察看向四周,所有小偷都接收到了廣播

/// <summary>/// 警察類/// </summary>class Police{private string type; //類型private string name; //名稱public event Action PoliceLook; //委托+event變事件/// <summary>/// 構造函數/// </summary>/// <param name="type">類型</param>/// <param name="name">名稱</param>public Police(string type, string name){this.type = type;this.name = name;}/// <summary>/// 注視/// </summary>public void LookAt(){Console.WriteLine(type + name + "注視了一下四周");if (PoliceLook != null){//外部調用LookAt后,當警察注視周圍的時候。會調用事件對象中,所有訂閱的用戶(也就是所有小偷,因為所有小偷都訂閱了)PoliceLook();}}//區別://1.事件不能在類的外部,通過類對象調用;事件提供廣播,訂閱//2.委托可以,在內外調用//3.事件表達外發的接口、委托常用回調函數//

2

Thief —— 小偷


這個類用來表示小偷,具備基本屬性名字、顏色、逃跑功能

那什么時候逃跑呢??就是當警察看向四周的時候逃跑

就是讓所有小偷、訂閱警察看向四周的事件,從而達到設計目的

/// <summary>/// 小偷類/// </summary>class Thief{private string name; //名字private string color; //衣服顏色/// <summary>/// 構造/// </summary>/// <param name="name">小偷名</param>/// <param name="color">衣服顏色</param>/// <param name="police">警察</param>public Thief(string name, string color, Police police){this.name = name;this.color = color;police.PoliceLook += Run; //把自身的逃跑方法,注冊/訂閱 警察類的事件對象中。一旦警察有Look這個動作,Run方法就會執行}/// <summary>/// 小偷逃跑打印方法/// </summary>public void Run(){Console.WriteLine("穿" + color + "衣服的:" + name + " - 跑了");}}

3

Main —— 主入口


這個類用來測試、打印輸出結果

直觀的表示事件變動

這個觀察者設計模式很簡單,直觀的即可明白事件、委托是怎樣傳遞信息的

/// <summary>/// 測試類——用來輸出結果/// </summary>class Program{/// <summary>/// 程序主入口/// </summary>/// <param name="args"></param>static void Main(string[] args){Police police = new Police("刑警", "警察叔叔");Thief thief1 = new Thief("神偷", "黑色", police);Thief thief2 = new Thief("笨賊", "白色", police);Thief thief3 = new Thief("平民", "平常色", police);Thief thief4 = new Thief("強盜", "紅色", police);//police.PoliceLook += thief1.Run;//這種方法沒有上邊直接構造簡單,目的都一樣//police.PoliceLook += thief2.Run;//police.PoliceLook += thief4.Run;police.LookAt(); //當警察對象有所動作的時候,所以訂閱了的小偷。都會被傳達信息,從而調用事件中封裝的所有訂閱者函數Console.ReadLine();}}

4

Console —— 控制臺輸出


F5控制臺輸出結果

會發現,只有當 police.LookAt() 被調用的時候,小偷才跑

否則,小偷都沒有任何動作

簡單的一個小例子,可直觀的看出事件/委托是如何傳遞不同類之間的調用關系

刑警警察叔叔注視了一下四周 穿黑色衣服的:神偷 - 跑了 穿白色衣服的:笨賊 - 跑了 穿平常色衣服的:平民 - 跑了 穿紅色衣服的:強盜 - 跑了

支持

May Be —— 搞開發,總有一天要做的事!


擁有自己的服務器,無需再找攻略!

Chinar 提供一站式教程,閉眼式創建!

為新手節省寶貴時間,避免采坑!


先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


1 —— 云服務器超全購買流程 (新手必備!)

2 —— 阿里ECS云服務器自定義配置 - 購買教程(新手必備!)

3—— Windows 服務器配置、運行、建站一條龍 !

4 —— Linux 服務器配置、運行、建站一條龍 !





Chinar


END

本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對于需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com

對于經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處并注明網址

轉載于:https://www.cnblogs.com/chinarbolg/p/9601423.html

總結

以上是生活随笔為你收集整理的Unity 3D观察者设计模式-C#委托和事件的运用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。