国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity 框架】QFramework v1.0 使用指南 工具篇:13. 其他事件工具 | Unity 游戲框架 | Unity 游戲開發(fā) | Unity 獨(dú)立游戲

這篇具有很好參考價(jià)值的文章主要介紹了【Unity 框架】QFramework v1.0 使用指南 工具篇:13. 其他事件工具 | Unity 游戲框架 | Unity 游戲開發(fā) | Unity 獨(dú)立游戲。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

QFramework 除了支持了 TypeEventSystem、EasyEvent 還支持了 EnumEventSystem、StringEventSystem。

EnumEventSystem

EnumEventSystem 前身是 老版本 QFramework 的 QEventSystem

using UnityEngine;

namespace QFramework
{
	public class EnumEventExample : MonoBehaviour
	{
		#region 事件定義

		public enum TestEvent
		{
			Start,
			TestOne,
			End,
		}

		public enum TestEventB
		{
			Start = TestEvent.End, // 為了保證每個(gè)消息 Id 唯一,需要頭尾相接
			TestB,
			End,
		}

		#endregion 事件定義
		
		void Start()
		{
			EnumEventSystem.Global.Register(TestEvent.TestOne, OnEvent);
		}

		void OnEvent(int key, params object[] obj)
		{
			switch (key)
			{
				case (int) TestEvent.TestOne:
					Debug.Log(obj[0]);
					break;
			}
		}

		private void Update()
		{
			if (Input.GetMouseButtonDown(0))
			{
				EnumEventSystem.Global.Send(TestEvent.TestOne, "Hello World!");
			}
		}

		private void OnDestroy()
		{
			EnumEventSystem.Global.UnRegister(TestEvent.TestOne, OnEvent);
		}
	}
}

StringEventSystem

StringEventSystem 的前身是,老版本的 MsgDispatcher

using UnityEngine;

namespace QFramework
{
	public class EnumEventExample : MonoBehaviour
	{
		#region 事件定義

		public enum TestEvent
		{
			Start,
			TestOne,
			End,
		}

		public enum TestEventB
		{
			Start = TestEvent.End, // 為了保證每個(gè)消息 Id 唯一,需要頭尾相接
			TestB,
			End,
		}

		#endregion 事件定義
		
		void Start()
		{
			EnumEventSystem.Global.Register(TestEvent.TestOne, OnEvent);
		}

		void OnEvent(int key, params object[] obj)
		{
			switch (key)
			{
				case (int) TestEvent.TestOne:
					Debug.Log(obj[0]);
					break;
			}
		}

		private void Update()
		{
			if (Input.GetMouseButtonDown(0))
			{
				EnumEventSystem.Global.Send(TestEvent.TestOne, "Hello World!");
			}
		}

		private void OnDestroy()
		{
			EnumEventSystem.Global.UnRegister(TestEvent.TestOne, OnEvent);
		}
	}
}
// 輸出結(jié)果
// 點(diǎn)擊鼠標(biāo)左鍵
// Hello World

StringEventSystem

using UnityEngine;

namespace QFramework.Example
{
    public class StringEventSystemExample : MonoBehaviour
    {
        void Start()
        {
            StringEventSystem.Global.Register("TEST_ONE", () =>
            {
                Debug.Log("TEST_ONE");
            }).UnRegisterWhenGameObjectDestroyed(gameObject);
            
            // 事件 + 參數(shù)
            StringEventSystem.Global.Register<int>("TEST_TWO", (count) =>
            {
                Debug.Log("TEST_TWO:" + count);

            }).UnRegisterWhenGameObjectDestroyed(gameObject);
        }

        private void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                StringEventSystem.Global.Send("TEST_ONE");
                StringEventSystem.Global.Send("TEST_TWO",10);
                
            }
        }
    }
}

// 輸出結(jié)果
// 點(diǎn)擊鼠標(biāo)左鍵
// TEST_ONE
// TEST_TWO:10

對(duì)比

  • TypeEventSystem:

    • 事件體定義簡潔
    • 比較適合用于設(shè)計(jì)框架
    • 支持 struct 獲得較好內(nèi)存性能
    • 使用反射,CPU 性能相對(duì)比較差
  • EasyEvent

    • 方便、易用、開發(fā)效率高
    • CPU 性能、內(nèi)存性能較好,接近委托
    • 功能有限
    • 比較適合設(shè)計(jì)通用解決工具,比如通用背包、全局生命周期觸發(fā)等
    • StringEventSystem、TypeEventSystem 的底層由 EasyEvent 實(shí)現(xiàn)
  • EnumEventSystem

    • 使用枚舉作為事件 id,比較適合和服務(wù)端的 protobuf 或帶有消息 id 的長鏈接通信
    • 性能較好
    • 枚舉用于定義消息體有維護(hù)成本
  • StringEventSystem

    • 使用字符串作為事件 id,比較適合和其他腳本層通信,比如 Lua、ILRuntime、PlayMaker 等。
    • 性能一般

目前官方推薦使用 TypeEventSystem 和 EasyEvent 這兩個(gè)工具。

如果要和網(wǎng)絡(luò)通信則選擇用 EnumEventSystem。

如果要和其他腳本層通信選擇用 StringEventSystem。文章來源地址http://www.zghlxwxcb.cn/news/detail-416336.html

更多內(nèi)容

  • QFramework 主頁:qframework.cn
  • QFramework Github 地址: https://github.com/liangxiegame/qframework
  • QFramework Gitee 地址:https://gitee.com/liangxiegame/QFramework

到了這里,關(guān)于【Unity 框架】QFramework v1.0 使用指南 工具篇:13. 其他事件工具 | Unity 游戲框架 | Unity 游戲開發(fā) | Unity 獨(dú)立游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JUnit與Mockito測試框架使用指南

    JUnit是一個(gè)用于編寫和運(yùn)行測試的測試框架,是Java語言最流行的單元測試框架之一。 JUnit的作用是幫助開發(fā)人員編寫高質(zhì)量的代碼。通過JUnit可以快速地自動(dòng)化測試,減少手動(dòng)測試成本,提高開發(fā)效率。 使用JUnit進(jìn)行測試通常需要遵循以下步驟: 新建測試類(Test Class) 在測

    2024年02月10日
    瀏覽(81)
  • 【教程】Unity 官配 JsonUtility 使用指南

    開發(fā)平臺(tái):Unity 2020 編程平臺(tái):Visual Studio 2020 編程語言:CSharp ? ??處理 Json 數(shù)據(jù),在目前多元化的 Json 處理插件上顯得簡單易用。而 JsonUtility 作為 Unity 官方坐鎮(zhèn)的 Json 數(shù)據(jù)處理軟件。必然有其存在的原因。 ? 支持?jǐn)?shù)字?jǐn)?shù)據(jù)類型: int 、 float 、 double 、 decimal 、 long 包括

    2024年01月21日
    瀏覽(25)
  • 人工智能 框架 paddlepaddle 飛槳 使用指南& 使用例子 線性回歸模型demo 1

    人工智能 框架 paddlepaddle 飛槳 使用指南& 使用例子 線性回歸模型demo 1

    安裝過程使用指南線性回歸模型 使用例子 本來預(yù)想?是安裝?到?conda?版本的 11.7的 但是電腦沒有g(shù)pu?所以 安裝過程稍有變動(dòng),下面簡單講下? 由于想安裝11.7版本?py?是3.9 所以虛擬環(huán)境名稱也是?paddle_env117 檢查環(huán)境即可 本文檔為您介紹 conda 安裝方式

    2024年04月15日
    瀏覽(23)
  • FastAPI 庫(Python 的 Web 框架)基本使用指南(二)

    FastAPI 中定義路由的方式主要有兩種,一種是使用 FastAPI 應(yīng)用實(shí)例的方法(例如 app.get() ),一種是使用裝飾器(例如 @app.get() ),它們的用法和作用略有不同。 方式1:使用 FastAPI 應(yīng)用實(shí)例的方法 app.get() 、 app.post() 等方法用于直接在應(yīng)用實(shí)例上定義路由。 這些方法接受路徑

    2024年02月05日
    瀏覽(31)
  • FastAPI 庫(Python 的 Web 框架)基本使用指南(一)

    參考文檔: 中文文檔 輕松上手Python的Web神器:FastAPI教程 FastAPI 是一個(gè)基于 Python 的現(xiàn)代 Web 框架,它具有快速構(gòu)建高性能 API 的特點(diǎn)。 FastAPI 關(guān)鍵特性: 快速:可與 NodeJS 和 Go 并肩的極高性能(歸功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。 高效編碼:提高功能開發(fā)

    2024年02月04日
    瀏覽(62)
  • 【12】Git工具 協(xié)同工作平臺(tái)使用教程 Gitee使用指南 騰訊工蜂使用指南【Gitee】【騰訊工蜂】【Git】

    【12】Git工具 協(xié)同工作平臺(tái)使用教程 Gitee使用指南 騰訊工蜂使用指南【Gitee】【騰訊工蜂】【Git】

    tips:少量的git安裝和使用教程,更多講快速使用上手Gitee和工蜂平臺(tái) ? ???Git - Downloads (git-scm.com) 找到對(duì)應(yīng)操作系統(tǒng),對(duì)應(yīng)版本,對(duì)應(yīng)的位數(shù) ? 下載后根據(jù)需求自己安裝,然后用git --version驗(yàn)證是否成功 ? 使用 SSH 密鑰可以讓你在與 Git 服務(wù)器進(jìn)行通信時(shí),實(shí)現(xiàn)更安全的身份

    2024年02月13日
    瀏覽(23)
  • 安全之劍:深度解析 Apache Shiro 框架原理與使用指南

    安全之劍:深度解析 Apache Shiro 框架原理與使用指南

    在現(xiàn)代軟件開發(fā)中,安全性一直是至關(guān)重要的一個(gè)方面。隨著網(wǎng)絡(luò)攻擊和數(shù)據(jù)泄露的不斷增加,我們迫切需要一種強(qiáng)大而靈活的安全框架來保護(hù)我們的應(yīng)用。Shiro框架就是這樣一把利劍,它能夠輕松地集成到你的項(xiàng)目中,為你的應(yīng)用提供可靠的安全性保護(hù)。 Apache Shiro是一個(gè)強(qiáng)

    2024年04月09日
    瀏覽(23)
  • NetAssist網(wǎng)絡(luò)調(diào)試工具使用指南 (附NetAssist工具包)

    1、NetAssist簡介 NetAssist網(wǎng)絡(luò)調(diào)試助手,是Windows平臺(tái)下開發(fā)的TCP/IP網(wǎng)絡(luò)調(diào)試工具,集TCP/UDP服務(wù)端及客戶端于一體,是網(wǎng)絡(luò)應(yīng)用開發(fā)及調(diào)試工作必備的專業(yè)工具之一,可以幫助網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)、開發(fā)、測試人員檢查所開發(fā)的網(wǎng)絡(luò)應(yīng)用軟/硬件產(chǎn)品的數(shù)據(jù)收發(fā)狀況,提高開發(fā)速度,簡

    2024年02月16日
    瀏覽(22)
  • Git 可視化工具 Fork 使用指南

    Git 可視化工具 Fork 使用指南

    轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/zhaoyanjun6/article/details/125135486 本文出自【趙彥軍的博客】 最近遇到一個(gè)新項(xiàng)目,經(jīng)過數(shù)年的積累,大概有 30000 個(gè)分支,用可視化工具打開直接卡死。 由于分支實(shí)在是太多了,一般的可視化工具,直接卡死,比如 Sourcetree 就直接卡死,測試了

    2024年01月25日
    瀏覽(29)
  • 【機(jī)器學(xué)習(xí)】模型調(diào)參工具:Hyperopt 使用指南

    【機(jī)器學(xué)習(xí)】模型調(diào)參工具:Hyperopt 使用指南

    在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域,模型調(diào)參是一個(gè)不可避免的任務(wù)。為了提高模型的性能,通常需要調(diào)整不同的超參數(shù)。 常用的調(diào)參策略包括: 網(wǎng)格搜索(Grid Search) 在模型中嘗試的每種可能的參數(shù)組合來工作,這意味著執(zhí)行整個(gè)搜索將需要很長時(shí)間,而且計(jì)算成本可能會(huì)很高。

    2024年01月23日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包