中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

北京做網(wǎng)站好的關(guān)鍵詞熱度分析

北京做網(wǎng)站好的,關(guān)鍵詞熱度分析,申請做版主 再什么網(wǎng)站,外貿(mào)做網(wǎng)站前言 在Unity程序設(shè)計過程中,我們處理的第一個對象是Application Instance。 它的主要職責(zé)是啟動流程管理、卸載流程管理,次要職責(zé)是管理在內(nèi)部的子系統(tǒng)生命周期。其他職責(zé),提供或橋接應(yīng)用程序的配置信息、及其他第三方接口。 它通常以單例的…
前言

? ? ? ? 在Unity程序設(shè)計過程中,我們處理的第一個對象是Application Instance。

? ? ? ? 它的主要職責(zé)是啟動流程管理、卸載流程管理,次要職責(zé)是管理在內(nèi)部的子系統(tǒng)生命周期。其他職責(zé),提供或橋接應(yīng)用程序的配置信息、及其他第三方接口。

? ? ? ? 它通常以單例的形式存在在場景中,即使在切換場景時,也不會被刪除。

設(shè)計需求? ? ? ??
  1. 可以自定義異步啟動流程、或卸載流程
  2. App 自動完成子系統(tǒng)的初始化和卸載工作
  3. 子系統(tǒng)是可輕松擴展的
  4. 通過App Instance可以輕松訪問到子系統(tǒng)實例
UML結(jié)構(gòu)
UML類結(jié)構(gòu)示例
代碼示例
//> XApplication.Utils.cs
//> Create by UniMarknamespace XF 
{public interface IApplication {void Startup();void Initialize();void Deinitialize();void Shutdown();}public interface IApplicationSubSystem {int InitializeSequence { get; }void Initialize(XApplication application);void Deinitialize();}
}
//> XApplication.cs
//> Create by UniMarkusing System;
using System.Collections.Generic;
using UnityEngine;namespace XF
{public sealed class XApplication : MonoBehaviour{private IApplication Application;private IApplicationSubSystem[] ApplicationSubSystems = new IApplicationSubSystem[0];private Dictionary<Type, IApplicationSubSystem> QuickReferenceTable;private void Awake (){Debug.Log($"啟動 [XApplication] 實例 ({gameObject.name})");if ( ( Application = GetComponent<IApplication>() ) == null ){throw new Exception("你需要實現(xiàn)IApplication的接口");}ApplicationSubSystems = GetAllApplicationSubSystemWithSequence();QuickReferenceTable = GetQuickReferenceTableWithAppSubSystem(ApplicationSubSystems);Application.Startup();}private void Start (){if ( ApplicationSubSystems.Length > 0 ){Debug.Log("實例化應(yīng)用內(nèi)聯(lián)系統(tǒng) ...");for ( int index = 0; index < ApplicationSubSystems.Length; index++ ){var subSystem = ApplicationSubSystems[index];var time = Time.time;subSystem.Initialize(this);Debug.Log($"釋放: {subSystem.GetType().Name} 耗時 {( Time.time - time ).ToString("{0.000}")}s");}}if ( Application != null ){Debug.Log("實例化應(yīng)用 ...");Application?.Initialize();}}private void OnDestroy (){if ( Application != null ){Debug.Log("釋放應(yīng)用 ...");Application?.Deinitialize();}if ( ApplicationSubSystems.Length > 0 ){Debug.Log("釋放應(yīng)用內(nèi)聯(lián)系統(tǒng) ..."); for ( int index = ApplicationSubSystems.Length - 1; index >= 0; index-- ){var subSystem = ApplicationSubSystems[index];var time = Time.time;subSystem.Deinitialize();Debug.Log($"釋放: {subSystem.GetType().Name} 耗時 {(Time.time - time).ToString("{0.000}")}s");}}Debug.Log($"關(guān)閉 [XApplication] 實例 ({gameObject.name})");Application.Shutdown();Application = null;ApplicationSubSystems = null;QuickReferenceTable = null;}private IApplicationSubSystem[] GetAllApplicationSubSystemWithSequence (){var list = new List<IApplicationSubSystem>();GetComponentsInChildren(true, list);list.Sort(( a, b ) => a.InitializeSequence.CompareTo(b.InitializeSequence));return list.ToArray();}private Dictionary<Type, IApplicationSubSystem> GetQuickReferenceTableWithAppSubSystem ( IApplicationSubSystem[] systems ){Dictionary<Type, IApplicationSubSystem> result = new Dictionary<Type, IApplicationSubSystem>();foreach ( var system in systems ){if ( false == result.TryAdd(system.GetType(), system) ){throw new Exception($"包含相同類型的子系統(tǒng) {system.GetType().Name}");}}return result;}#region APIpublic T GetSubSystem<T> () where T : MonoBehaviour, IApplicationSubSystem{if ( QuickReferenceTable.TryGetValue(typeof(T), out var system) ){return system as T;}throw new Exception($"不存在的子系統(tǒng) {typeof(T).Name}");}#endregion}
}
//> XGame.cs
//> Create by UniMarkusing System;
using UnityEngine;
using XF;public abstract class XGame<T> : MonoBehaviour, IApplicationwhere T : XGame<T>
{public static T Instance{get; private set;}public XApplication Owner{get; private set;}//> 定義你自己的系統(tǒng)在這里    public TestSubSystem TestSystem { get; private set; }void IApplication.Startup (){if ( Instance != null ){throw new Exception($"[{gameObject.name}]{this.GetType().Name}類存在多實例異常!");}Instance = this as T;GameObject.DontDestroyOnLoad(gameObject);Owner = GetComponent<XApplication>();//> 初始化你的系統(tǒng)在這里TestSystem = Owner.GetSubSystem<TestSubSystem>();}void IApplication.Shutdown (){Instance = null;Owner = null;//> 釋放你的系統(tǒng)在這里TestSystem = null;}void IApplication.Initialize () => StartGame();void IApplication.Deinitialize () => QuitGame();protected abstract void StartGame ();protected abstract void QuitGame ();
}
//> GameIns.cs
//> Create by UniMarkusing UnityEngine;
using XF;public class GameIns : XGame<GameIns>
{#region 生命周期protected override async void StartGame (){//> 加載配置文件 //> await 配置文件加載完畢//> 做個測試var testSystem =  Owner.GetSubSystem<TestSubSystem> ();Debug.Log(testSystem.GetMessage());//> 進入第一個場景}protected override void QuitGame (){//> 在這里卸載業(yè)務(wù)載入的資源和數(shù)據(jù)}#endregion
}
//> TestSubSystem.cs
//> Create by UniMarkusing UnityEngine;namespace XF
{#region 非正式代碼public class TestSubSystem : MonoBehaviour, IApplicationSubSystem{[SerializeField]private int InitializeSequence;int IApplicationSubSystem.InitializeSequence => InitializeSequence;private XApplication Owner;void IApplicationSubSystem.Initialize ( XApplication application ){Owner = application;}void IApplicationSubSystem.Deinitialize (){Owner = null;}public string GetMessage (){return "Hello Here!";}}#endregion
}
代碼組織結(jié)構(gòu)

-| Scripts

? ? ? ? --|?Core

? ? ? ? ? ? ? ? ---| SubSystems

? ? ? ? ? ? ? ? ? ? ? ? ---- TestSubSystem.cs

? ? ? ? ? ? ? ? --- XApplication.cs

? ? ? ? ? ? ? ? --- XApplication.Utils.cs

? ? ? ? ? ? ? ? --- XGame.cs

? ? ? ? -- GameIns.cs

創(chuàng)建應(yīng)用程序預(yù)制體
預(yù)制體組織結(jié)構(gòu)
XApplication 節(jié)點
TestSubSystem 節(jié)點
下載代碼示例?

?下載demo

http://www.risenshineclean.com/news/8788.html

相關(guān)文章:

  • 網(wǎng)絡(luò)公司給別人做網(wǎng)站的cms是買的授權(quán)么自媒體怎么入門
  • 做網(wǎng)站要用到數(shù)據(jù)庫嗎東莞網(wǎng)站定制開發(fā)
  • 制作表格的軟件app優(yōu)化大師怎么提交作業(yè)
  • 儀征網(wǎng)站建設(shè)河北網(wǎng)站建設(shè)公司排名
  • 虛擬主機如何建設(shè)多個網(wǎng)站企業(yè)網(wǎng)站建設(shè)流程
  • 重慶做網(wǎng)站建設(shè)深圳市seo上詞多少錢
  • js實現(xiàn)網(wǎng)站浮動窗口產(chǎn)品關(guān)鍵詞
  • 烏魯木齊app制作seo引擎優(yōu)化軟件
  • 公司做網(wǎng)站怎么做網(wǎng)頁制作app
  • 網(wǎng)站做多個產(chǎn)品google官網(wǎng)瀏覽器
  • 推廣哪些app最掙錢天津seo選天津旗艦科技a
  • 網(wǎng)站建設(shè)電商百度seo手機
  • 網(wǎng)站與網(wǎng)頁 主頁的概念及它們的區(qū)別游戲推廣公司
  • 畢業(yè)設(shè)計做音樂網(wǎng)站seo搜索優(yōu)化專員
  • 外貿(mào)網(wǎng)站建設(shè).cover有利于seo優(yōu)化的是
  • 在工商局網(wǎng)站做年報要交費嗎快手流量推廣免費網(wǎng)站
  • 網(wǎng)站建設(shè)與管理做什么網(wǎng)站seo優(yōu)化外包顧問
  • 怎樣做企業(yè)的網(wǎng)站首頁微信公眾號推廣軟文案例
  • 如何在網(wǎng)站上做評比文案短句干凈治愈
  • 網(wǎng)站做好了前端 后端怎么做自建站模板
  • 建設(shè)的網(wǎng)站百度搜索推廣采取
  • 搭建企業(yè)網(wǎng)站需要什么論壇推廣
  • 鐘表網(wǎng)站開發(fā)背景文章推廣普通話
  • 58同城做網(wǎng)站的電話目前最好的引流推廣方法
  • 個人網(wǎng)站備案幕布網(wǎng)絡(luò)營銷經(jīng)典案例
  • 常用網(wǎng)站logo網(wǎng)站人多怎么優(yōu)化
  • 做網(wǎng)站要學(xué)會什么軟件seo培訓(xùn)機構(gòu)哪家好
  • 模版網(wǎng)站做支付功能江門seo外包公司
  • 做ppt的模板的網(wǎng)站有哪些一鍵優(yōu)化
  • 哪里建設(shè)網(wǎng)站最好用百度關(guān)鍵詞的費用是多少