{"id":87,"date":"2019-10-09T20:22:11","date_gmt":"2019-10-09T12:22:11","guid":{"rendered":"http:\/\/www.blinkedu.cn\/?p=87"},"modified":"2019-10-14T19:08:37","modified_gmt":"2019-10-14T11:08:37","slug":"c%ef%bc%9a%e5%9f%ba%e4%ba%8e%e7%b1%bb%e5%9e%8b%e7%9a%84%e7%ae%80%e6%98%93%e4%ba%8b%e4%bb%b6%e7%9b%91%e5%90%ac%e4%b8%8e%e5%b9%bf%e6%92%ad%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"https:\/\/www.blinkedu.cn\/index.php\/2019\/10\/09\/c%ef%bc%9a%e5%9f%ba%e4%ba%8e%e7%b1%bb%e5%9e%8b%e7%9a%84%e7%ae%80%e6%98%93%e4%ba%8b%e4%bb%b6%e7%9b%91%e5%90%ac%e4%b8%8e%e5%b9%bf%e6%92%ad%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"C#\uff1a\u57fa\u4e8e\u7c7b\u578b\u7684\u7b80\u6613\u4e8b\u4ef6\u76d1\u542c\u4e0e\u5e7f\u64ad\u7cfb\u7edf"},"content":{"rendered":"<h2>\u4f5c\u7528<\/h2>\n<p>\u5728\u679a\u4e3e\u4e8b\u4ef6\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u7684\u6bcf\u4e00\u4e2a\u4e8b\u4ef6\u90fd\u662f\u901a\u8fc7\u4e00\u4e2a\u679a\u4e3e\u8fdb\u884c\u6807\u8bc6\u7684\uff0c\u4f46\u662f\u5728\u57fa\u4e8e\u7c7b\u7684\u4e8b\u4ef6\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u7c7b\u8fdb\u884c\u4e8b\u4ef6\u7684\u6807\u8bc6\uff0c\u6bcf\u4e00\u4e2a\u4e8b\u4ef6\u5bf9\u5e94\u4e00\u4e2a\u7c7b\uff0c\u8fd9\u6837\u76f8\u6bd4\u4e8e\u679a\u4e3e\u7684\u65b9\u5f0f\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4e8b\u4ef6\u7c7b\u4f20\u9012\u82e5\u5e72\u4e2a\u53c2\u6570\uff0c\u6ca1\u6709\u53c2\u6570\u7684\u9650\u5236<\/p>\n<h2>\u4ee3\u7801<\/h2>\n<ul>\n<li><strong>\u4e8b\u4ef6\u5b9a\u4e49<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ &lt;summary&gt;\n\/\/\/ \u4e8b\u4ef6\u63a5\u53e3\n\/\/\/ &lt;\/summary&gt;\npublic interface IEvent\n{\n\n}\n\n<\/code><\/pre>\n<pre><code class=\"language-csharp line-numbers\">\/\/\/ &lt;summary&gt;\n\/\/\/ \u5177\u4f53\u7684\u4e8b\u4ef6\uff0c\u8fd9\u91cc\u4e3a\u8d2d\u4e70\u4e8b\u4ef6\n\/\/\/ \u7c7b\u4e2d\u53ef\u4ee5\u5b9a\u4e49\u8fd9\u4e2a\u4e8b\u4ef6\u9700\u8981\u7528\u7684\u6570\u636e\n\/\/\/ &lt;\/summary&gt;\npublic class BuyEvent : IEvent\n{\n    \/\/ \u5546\u54c1\u540d\u79f0\n    public string GoodsName { get; set; }\n    \/\/ \u5546\u54c1\u4ef7\u683c\n    public int Price { get; set; }\n}\n<\/code><\/pre>\n<ul>\n<li><strong>\u4e8b\u4ef6\u7684\u7ba1\u7406\u7c7b<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-csharp line-numbers\">using System;\nusing System.Collections.Generic;\n\npublic class EventSystem\n{\n    \/\/ \u7528\u6765\u5b58\u50a8\u4e8b\u4ef6\u76d1\u542c\u7684\u5b57\u5178\n    private static Dictionary&lt;Type, Delegate&gt; m_EventDic = new Dictionary&lt;Type, Delegate&gt;();\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6ce8\u518c\u4e8b\u4ef6\u76d1\u542c\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;typeparam name=&quot;T&quot;&gt;&lt;\/typeparam&gt;\n    \/\/\/ &lt;param name=&quot;callback&quot;&gt;&lt;\/param&gt;\n    public static void Register&lt;T&gt;(Action&lt;T&gt; callback) where T : IEvent\n    {\n        Type type = typeof(T);\n        if (!m_EventDic.ContainsKey(type))\n        {\n            m_EventDic.Add(type, null);\n        }\n        m_EventDic[type] = m_EventDic[type] as Action&lt;T&gt; + callback;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u53d6\u6d88\u6ce8\u518c\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;typeparam name=&quot;T&quot;&gt;&lt;\/typeparam&gt;\n    \/\/\/ &lt;param name=&quot;callback&quot;&gt;&lt;\/param&gt;\n    public static void Unregister&lt;T&gt;(Action&lt;T&gt; callback)\n    {\n        Type type = typeof(T);\n        if (m_EventDic.ContainsKey(type))\n        {\n            m_EventDic[type] = (m_EventDic[type] as Action&lt;T&gt;) - callback;\n            if (m_EventDic[type] == null)\n            {\n                m_EventDic.Remove(type);\n            }\n        }\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5e7f\u64ad\u6d88\u606f\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;typeparam name=&quot;T&quot;&gt;&lt;\/typeparam&gt;\n    \/\/\/ &lt;param name=&quot;data&quot;&gt;&lt;\/param&gt;\n    public static void Broadcast&lt;T&gt;(T data) where T : IEvent\n    {\n        Type type = typeof(T);\n        Delegate callback = null;\n        if (m_EventDic.TryGetValue(type, out callback) &amp;&amp; callback != null)\n        {\n            (m_EventDic[type] as Action&lt;T&gt;)(data);\n        }\n    }\n}\n<\/code><\/pre>\n<ul>\n<li><strong>\u6d4b\u8bd5<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-csharp line-numbers\">using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\n\npublic class Test : MonoBehaviour\n{\n    private void Start()\n    {\n        \/\/ \u6ce8\u518c\u76d1\u542c\n        EventSystem.Register&lt;BuyEvent&gt;(Callback);\n    }\n\n    private void Update()\n    {\n        \/\/ \u6309\u4e0bQ\u952e\u5e7f\u64ad\u4e8b\u4ef6\u6d88\u606f\n        if (Input.GetKeyDown(KeyCode.Q))\n        {\n            EventSystem.Broadcast&lt;BuyEvent&gt;(new BuyEvent\n            {\n                GoodsName = &quot;MacBook&quot;,\n                Price = 12999\n            });\n        }\n\n        \/\/ \u6309\u4e0bA\u952e\u6ce8\u9500\u76d1\u542c\n        if (Input.GetKeyDown(KeyCode.A))\n        {\n            EventSystem.Unregister&lt;BuyEvent&gt;(Callback);\n        }\n    }\n\n    \/\/ \u4e8b\u4ef6\u76d1\u542c\u7684\u56de\u8c03\u51fd\u6570\n    private void Callback(BuyEvent obj)\n    {\n        Debug.Log(obj.GoodsName + &quot; -&gt; &quot; + obj.Price);\n    }\n}\n\n<\/code><\/pre>\n<p><img decoding=\"async\" layer-src=\"https:\/\/i.loli.net\/2019\/10\/09\/Cw6j8tp1FfN4yDB.png\" src=\"https:\/\/i.loli.net\/2019\/10\/09\/Cw6j8tp1FfN4yDB.png\" alt=\"\u300aC#\uff1a\u57fa\u4e8e\u7c7b\u578b\u7684\u7b80\u6613\u4e8b\u4ef6\u76d1\u542c\u4e0e\u5e7f\u64ad\u7cfb\u7edf\u300b\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f5c\u7528 \u5728\u679a\u4e3e\u4e8b\u4ef6\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u7684\u6bcf\u4e00\u4e2a\u4e8b\u4ef6\u90fd\u662f\u901a\u8fc7\u4e00\u4e2a\u679a\u4e3e\u8fdb\u884c\u6807\u8bc6\u7684\uff0c\u4f46\u662f\u5728\u57fa\u4e8e\u7c7b\u7684\u4e8b\u4ef6\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u7c7b\u8fdb\u884c\u4e8b\u4ef6\u7684\u6807\u8bc6\uff0c\u6bcf\u4e00\u4e2a\u4e8b\u4ef6\u5bf9\u5e94\u4e00\u4e2a\u7c7b\uff0c\u8fd9\u6837\u76f8\u6bd4\u4e8e\u679a\u4e3e\u7684\u65b9\u5f0f\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4e8b\u4ef6\u7c7b\u4f20\u9012\u82e5\u5e72\u4e2a\u53c2\u6570\uff0c\u6ca1\u6709\u53c2\u6570\u7684\u9650\u5236 \u4ee3\u7801 \u4e8b\u4ef6\u5b9a\u4e49 \/\/\/ <summary> \/\/\/ \u4e8b\u4ef6\u63a5\u53e3 \/\/\/ <\/summary> publi\u2026\u2026<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-csharp"],"_links":{"self":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/87"}],"collection":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":0,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}