using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CreateRoleManager : Singleton { CreateRoleProcessor m_Processor; CreateRoleProcessor processor { get { return m_Processor ?? (m_Processor = GameObject.FindObjectOfType()); } } Dictionary jobModels = new Dictionary(); public readonly LogicInt selectedJob = new LogicInt(); public void RandomJob() { var random = UnityEngine.Random.Range(0, 100); selectedJob.value = random < 40 ? 1 : 2; } public void View(int job, bool immediately) { processor.LoadNecessaryResources(); selectedJob.value = job; switch (job) { case 1: processor.SwitchToWarrior(immediately); break; case 2: processor.SwitchToMagic(immediately); break; } } public void Dispose() { m_Processor.Dispose(); m_Processor = null; jobModels.Clear(); if (!AssetSource.mobFromEditor) { AssetBundleUtility.Instance.UnloadAssetBundle("mob/createrole", true, false); } if (!AssetSource.effectFromEditor) { AssetBundleUtility.Instance.UnloadAssetBundle("effect/cj", true, false); } } public void LoadModel(int job, Action _callBack) { if (jobModels.ContainsKey(job)) { if (_callBack != null) { _callBack(true, jobModels[job]); } return; } Action assetCallBack = (bool _ok, UnityEngine.Object _asset) => { GameObject instance = null; if (_ok) { instance = GameObject.Instantiate(_asset) as GameObject; if (instance != null) { jobModels[job] = instance; } } if (_callBack != null) { _callBack(_ok && instance != null, instance); } }; InstanceResourcesLoader.LoadCreateRole(job, assetCallBack); } public void ReleaseModel(int job) { if (jobModels.ContainsKey(job)) { jobModels[job].gameObject.SetActive(false); } } }