| System/CreateRole/CreateRoleBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CreateRole/CreateRoleManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CreateRole/CreateRoleProcessor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CreateRole/CreateRoleScriptableObject.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/CreateRole/CreateRoleScriptableObject.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/EquipTrain/EquipTrainPropertyBarBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Login/SelectRoleWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/SelectRole/SelectRoleBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/SelectRole/SelectRoleProcessor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/CreateRole/CreateRoleBehaviour.cs
@@ -3,47 +3,53 @@ using UnityEngine; using Snxxz.UI; public class CreateRoleBehaviour : MonoBehaviour public class CreateRoleBehaviour { [SerializeField] int m_Job; [SerializeField] float m_Scale = 1; [SerializeField] EnterPictureType m_EnterPictureType; [SerializeField] ShowAnimation m_RoutimeShowAnimation; [SerializeField] Effect[] m_PersistentEffect; [SerializeField] Effect[] m_RoutimeShowEffect; [SerializeField] CreateRoleHeroPlatform m_Platform; [SerializeField] ActorShadowCaster m_Shadow; CreateRoleTimeLine showTimeLine = new CreateRoleTimeLine(); public State state { get; private set; } CreateRoleTimeLine showTimeLine = new CreateRoleTimeLine(); List<SFXController> sfxControllers = new List<SFXController>(); public void DoRoutineShow() GameObject behaviour; ActorShadowCaster shadow; CreateRoleHeroPlatform platform; public void Show(CreateRoleScriptableObject.RoleShowParams showParams) { m_Shadow.gameObject.SetActive(false); m_Platform.transform.localEulerAngles = new Vector3(0, 180, 0); m_Platform.ForbidSeconds(m_RoutimeShowAnimation.delay + m_RoutimeShowAnimation.duration); CreateRoleManager.Instance.LoadModel(m_Job, (bool ok, UnityEngine.Object @object) => if (behaviour == null) { var prefab = SceneLoader.LoadCreateRole(showParams.platformPrefabName); behaviour = GameObject.Instantiate(prefab, showParams.platformPosition, Quaternion.identity); behaviour.name = showParams.platformPrefabName; shadow = behaviour.GetComponentInChildren<ActorShadowCaster>(); platform = behaviour.GetComponentInChildren<CreateRoleHeroPlatform>(); var camera = behaviour.GetComponent<Camera>("CreateRoleCamera"); if (camera != null) { camera.gameObject.SetActive(false); } } shadow.gameObject.SetActive(false); platform.transform.localEulerAngles = new Vector3(0, 180, 0); platform.ForbidSeconds(showParams.animationDuration); CreateRoleManager.Instance.LoadModel(showParams.job, (bool ok, UnityEngine.Object @object) => { if (ok) { var model = @object as GameObject; model.transform.SetParentEx(m_Platform.transform, Vector3.zero, Quaternion.identity, Vector3.one * m_Scale); model.transform.SetParentEx(platform.transform, Vector3.zero, Quaternion.identity, Vector3.one * showParams.scale); switch (m_EnterPictureType) switch (showParams.enterPictureType) { case EnterPictureType.OutIn: case CreateRoleScriptableObject.EnterPictureType.OutIn: model.SetActive(false); break; case EnterPictureType.Stand: case CreateRoleScriptableObject.EnterPictureType.Stand: model.SetActive(true); m_Shadow.gameObject.SetActive(true); m_Shadow.Cast(model.transform); shadow.gameObject.SetActive(true); shadow.Cast(model.transform); break; } @@ -51,41 +57,38 @@ state = State.RoutimeShow; showTimeLine.ClearNode(); showTimeLine.AddNone(m_RoutimeShowAnimation.delay, () => showTimeLine.AddNone(0f, () => { if (m_EnterPictureType == EnterPictureType.OutIn) if (showParams.enterPictureType == CreateRoleScriptableObject.EnterPictureType.OutIn) { model.SetActive(true); } var animator = model.GetComponent<Animator>(); animator.Play(m_RoutimeShowAnimation.animation); animator.Play(showParams.animation); }); showTimeLine.AddNone(m_RoutimeShowAnimation.delay+0.1f, () => showTimeLine.AddNone(0.1f, () => { if (m_EnterPictureType == EnterPictureType.OutIn) if (showParams.enterPictureType == CreateRoleScriptableObject.EnterPictureType.OutIn) { m_Shadow.gameObject.SetActive(true); m_Shadow.Cast(model.transform); shadow.gameObject.SetActive(true); shadow.Cast(model.transform); } }); foreach (var effect in m_PersistentEffect) foreach (var effect in showParams.persistentEffects) { showTimeLine.AddNone(effect.delay, () => showTimeLine.AddNone(0f, () => { PlayEffect(model.transform, effect); }); } foreach (var effect in m_RoutimeShowEffect) showTimeLine.AddNone(0f, () => { showTimeLine.AddNone(effect.delay, () => { PlayEffect(model.transform, effect); }); } PlayEffect(model.transform, showParams.showEffect); }); showTimeLine.AddNone(2f, () => { @@ -98,26 +101,23 @@ }); } public void SetActive(bool active) { if (behaviour != null) { behaviour.gameObject.SetActive(active); } } public void Dispose() { showTimeLine.Dispose(); ReleaseEffects(); } private void PlayEffect(Transform model, Effect effect) { var config = EffectConfig.Get(effect.id); Transform parent = null; if (!string.IsNullOrEmpty(config.nodeName)) { parent = model.transform.GetChildTransformDeeply(config.nodeName); } else { parent = model.transform; } sfxControllers.Add(SFXPlayUtility.Instance.Play(effect.id, parent)); showTimeLine = null; behaviour = null; shadow = null; platform = null; } public void ReleaseEffects() @@ -130,25 +130,20 @@ sfxControllers.Clear(); } [System.Serializable] public struct ShowAnimation private void PlayEffect(Transform model, int effectId) { public string animation; public float delay; public float duration; } var config = EffectConfig.Get(effectId); Transform parent = null; if (!string.IsNullOrEmpty(config.nodeName)) { parent = model.transform.GetChildTransformDeeply(config.nodeName); } else { parent = model.transform; } [System.Serializable] public struct Effect { public int id; public float delay; } public enum EnterPictureType { Stand, OutIn, sfxControllers.Add(SFXPlayUtility.Instance.Play(effectId, parent)); } public enum State System/CreateRole/CreateRoleManager.cs
@@ -5,13 +5,7 @@ public class CreateRoleManager : Singleton<CreateRoleManager> { CreateRoleProcessor m_Processor; CreateRoleProcessor processor { get { return m_Processor ?? (m_Processor = GameObject.FindObjectOfType<CreateRoleProcessor>()); } } CreateRoleProcessor processor; Dictionary<int, GameObject> jobModels = new Dictionary<int, GameObject>(); public readonly LogicInt selectedJob = new LogicInt(); @@ -24,7 +18,12 @@ public void View(int job, bool immediately) { processor.LoadNecessaryResources(); if (processor == null) { processor = new CreateRoleProcessor(); processor.LoadNecessaryResources(); } selectedJob.value = job; switch (job) { @@ -39,8 +38,8 @@ public void Dispose() { m_Processor.Dispose(); m_Processor = null; processor.Dispose(); processor = null; jobModels.Clear(); if (!AssetSource.mobFromEditor) System/CreateRole/CreateRoleProcessor.cs
@@ -3,12 +3,13 @@ using UnityEngine; using Snxxz.UI; public class CreateRoleProcessor : MonoBehaviour public class CreateRoleProcessor { [SerializeField] CreateRoleBehaviour m_Warrior; [SerializeField] CreateRoleBehaviour m_Magic; CreateRoleTimeLine m_WarriorTimeLine = new CreateRoleTimeLine(); CreateRoleTimeLine m_MagicTimeLine = new CreateRoleTimeLine(); [SerializeField] CameraParams m_CameraParams; CreateRoleBehaviour m_WarriorBehaviour = new CreateRoleBehaviour(); CreateRoleBehaviour m_MagicBehaviour = new CreateRoleBehaviour(); Animator cameraAnimator; Camera createRoleCamera; @@ -17,65 +18,78 @@ { if (cameraAnimator == null || createRoleCamera == null) { var prefab = SceneLoader.LoadCreateRole(m_CameraParams.prefabName); var cameraParams = CreateRoleScriptableObject.GetCameraParams(); var prefab = SceneLoader.LoadCreateRole(cameraParams.prefabName); var instance = GameObject.Instantiate(prefab); cameraAnimator = instance.GetComponent<Animator>(); createRoleCamera = instance.GetComponentInChildren<Camera>(true); createRoleCamera.enabled = false; } } public void SwitchToWarrior(bool immediately) { WindowCenter.Instance.Close<CreateRoleWin>(); cameraAnimator.Play(m_CameraParams.magicToWarrior, 0, immediately ? 1f : 0f); m_Magic.ReleaseEffects(); m_Warrior.ReleaseEffects(); m_WarriorTimeLine.ClearNode(); var cameraParams = CreateRoleScriptableObject.GetCameraParams(); StopCoroutine("Co_SwitchToWarrior"); StartCoroutine("Co_SwitchToWarrior", immediately ? 0f : m_CameraParams.magicToWarriorTime); m_MagicBehaviour.SetActive(false); m_WarriorBehaviour.SetActive(false); m_WarriorTimeLine.AddNone(0f, () => { WindowCenter.Instance.Close<CreateRoleWin>(); createRoleCamera.enabled = true; cameraAnimator.Play(cameraParams.magicToWarrior, 0, immediately ? 1f : 0f); m_MagicBehaviour.ReleaseEffects(); m_WarriorBehaviour.ReleaseEffects(); }); m_WarriorTimeLine.AddNone(immediately ? 0f : cameraParams.magicToWarriorTime, () => { m_WarriorBehaviour.SetActive(true); m_WarriorBehaviour.Show(CreateRoleScriptableObject.GetJobParams(1)); }); } public void SwitchToMagic(bool immediately) { WindowCenter.Instance.Close<CreateRoleWin>(); cameraAnimator.Play(m_CameraParams.warriorToMagic, 0, immediately?1f:0f); m_Magic.ReleaseEffects(); m_Warrior.ReleaseEffects(); m_MagicTimeLine.ClearNode(); var cameraParams = CreateRoleScriptableObject.GetCameraParams(); StopCoroutine("Co_SwitchToMagic"); StartCoroutine("Co_SwitchToMagic", immediately ? 0f : m_CameraParams.warriorToMagicTime); } m_MagicBehaviour.SetActive(false); m_WarriorBehaviour.SetActive(false); IEnumerator Co_SwitchToWarrior(float waitTime) { yield return new WaitForSeconds(waitTime); m_Magic.gameObject.SetActive(false); m_Warrior.gameObject.SetActive(true); m_Warrior.DoRoutineShow(); } m_MagicTimeLine.AddNone(0f, () => { WindowCenter.Instance.Close<CreateRoleWin>(); createRoleCamera.enabled = true; cameraAnimator.Play(cameraParams.warriorToMagic, 0, immediately ? 1f : 0f); IEnumerator Co_SwitchToMagic(float waitTime) { yield return new WaitForSeconds(waitTime); m_Warrior.gameObject.SetActive(false); m_Magic.gameObject.SetActive(true); m_Magic.DoRoutineShow(); m_MagicBehaviour.ReleaseEffects(); m_WarriorBehaviour.ReleaseEffects(); }); m_MagicTimeLine.AddNone(immediately ? 0f : cameraParams.warriorToMagicTime, () => { m_MagicBehaviour.SetActive(true); m_MagicBehaviour.Show(CreateRoleScriptableObject.GetJobParams(2)); }); } public void Dispose() { m_Warrior.Dispose(); m_Magic.Dispose(); } m_WarriorBehaviour.Dispose(); m_MagicBehaviour.Dispose(); m_WarriorBehaviour = null; m_MagicBehaviour = null; [System.Serializable] public struct CameraParams { public string prefabName; public string warriorToMagic; public float warriorToMagicTime; public string magicToWarrior; public float magicToWarriorTime; m_WarriorTimeLine.Dispose(); m_MagicTimeLine.Dispose(); cameraAnimator = null; createRoleCamera = null; } System/CreateRole/CreateRoleScriptableObject.cs
New file @@ -0,0 +1,76 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(menuName = "Config/CreateRoleScriptableObject")] public class CreateRoleScriptableObject : ScriptableObject { [SerializeField] CameraParams m_CameraParams; public CameraParams cameraParams { get { return m_CameraParams; } } [SerializeField] RoleShowParams m_Warrior; public RoleShowParams warrior { get { return m_Warrior; } } [SerializeField] RoleShowParams m_Magic; public RoleShowParams magic { get { return m_Magic; } } static CreateRoleScriptableObject config; public static CameraParams GetCameraParams() { if (config == null) { config = BuiltInLoader.LoadScriptableObject<CreateRoleScriptableObject>("CreateRoleConfig"); } return config.cameraParams; } public static RoleShowParams GetJobParams(int job) { if (config == null) { config = BuiltInLoader.LoadScriptableObject<CreateRoleScriptableObject>("CreateRoleConfig"); } switch (job) { case 1: return config.warrior; case 2: return config.magic; default: return default(RoleShowParams); } } [System.Serializable] public struct CameraParams { public string prefabName; public string warriorToMagic; public float warriorToMagicTime; public string magicToWarrior; public float magicToWarriorTime; } [System.Serializable] public struct RoleShowParams { public int job; public float scale; public string platformPrefabName; public Vector3 platformPosition; public EnterPictureType enterPictureType; public string animation; public float animationDuration; public int[] persistentEffects; public int showEffect; } public enum EnterPictureType { Stand, OutIn, } } System/CreateRole/CreateRoleScriptableObject.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 41159df38ea09e0419833fb7efe84e1a timeCreated: 1555642714 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/EquipTrain/EquipTrainPropertyBarBehaviour.cs
@@ -104,7 +104,7 @@ { if (operateType == EquipTrainModel.TrainOperateType.Train) { m_DeltaValue.text = inevitable ? "最大" : ""; m_DeltaValue.text = inevitable ? "必增" : ""; m_DeltaValue.color = UIHelper.GetUIColor(TextColType.Green, true); m_DeltaValueMax.text = inevitable ? string.Format("+{0}", propertyBar.deltaMax) : ""; } System/Login/SelectRoleWin.cs
@@ -23,18 +23,6 @@ [SerializeField] Image m_Description; [SerializeField] Image m_JobName; SelectRoleProcessor m_SelectRoleProcessor; SelectRoleProcessor selectRoleProcessor { get { if (m_SelectRoleProcessor == null) { m_SelectRoleProcessor = GameObject.FindObjectOfType<SelectRoleProcessor>(); } return m_SelectRoleProcessor; } } LoginModel model { get { return ModelCenter.Instance.GetModel<LoginModel>(); } } #region Built-in @@ -68,7 +56,6 @@ protected override void OnAfterClose() { selectRoleProcessor.Dispose(); } #endregion @@ -108,7 +95,7 @@ m_Description.SetSprite(config.description); m_JobName.SetSprite(config.jobName); selectRoleProcessor.Show(PlayerDatas.Instance.loginInfo.Job); new SelectRoleProcessor().Show(); } } System/SelectRole/SelectRoleBehaviour.cs
@@ -3,18 +3,19 @@ using UnityEngine; using Snxxz.UI; public class SelectRoleBehaviour : MonoBehaviour public class SelectRoleBehaviour { [SerializeField] Camera m_CreateRoleCamera; [SerializeField] CreateRoleHeroPlatform m_HeroPlatform; [SerializeField] ActorShadowCaster m_Shadow; GameObject behaviour; Camera ceateRoleCamera; CreateRoleHeroPlatform platform; ActorShadowCaster shadow; UI3DShowHero playerModel = new UI3DShowHero(); public void Show() { Dispose(); LoadAssets(CreateRoleScriptableObject.GetJobParams(PlayerDatas.Instance.loginInfo.Job)); playerModel.Dispose(); var fashionClothes = 0; var fashionWeapon = 0; @@ -69,33 +70,45 @@ secondaryId = secondaryItemId, }; m_CreateRoleCamera.gameObject.SetActive(true); var model = playerModel.Show(data, m_HeroPlatform.transform); ceateRoleCamera.gameObject.SetActive(true); var model = playerModel.Show(data, platform.transform); playerModel.StandUp(); m_Shadow.gameObject.SetActive(true); m_Shadow.Cast(model.transform); shadow.gameObject.SetActive(true); shadow.Cast(model.transform); } public void Hide() { if (ceateRoleCamera != null) { ceateRoleCamera.gameObject.SetActive(false); } if (shadow != null) { shadow.gameObject.SetActive(false); } } public void Dispose() { m_CreateRoleCamera.gameObject.SetActive(false); m_Shadow.gameObject.SetActive(false); playerModel.Dispose(); behaviour = null; ceateRoleCamera = null; platform = null; shadow = null; playerModel = null; } private void Awake() private void LoadAssets(CreateRoleScriptableObject.RoleShowParams showParams) { m_CreateRoleCamera.gameObject.SetActive(false); m_Shadow.gameObject.SetActive(false); if (behaviour == null) { var prefab = SceneLoader.LoadCreateRole(showParams.platformPrefabName); behaviour = GameObject.Instantiate(prefab, showParams.platformPosition, Quaternion.identity); behaviour.name = showParams.platformPrefabName; shadow = behaviour.GetComponentInChildren<ActorShadowCaster>(); platform = behaviour.GetComponentInChildren<CreateRoleHeroPlatform>(); ceateRoleCamera = behaviour.GetComponentInChildren<Camera>(); } } private void OnEnable() { } private void OnDestroy() { StopAllCoroutines(); } } System/SelectRole/SelectRoleProcessor.cs
@@ -3,28 +3,11 @@ using UnityEngine; using Snxxz.UI; public class SelectRoleProcessor : MonoBehaviour public class SelectRoleProcessor { [SerializeField] SelectRoleBehaviour m_Job1; [SerializeField] SelectRoleBehaviour m_Job2; public void Show(int job) public void Show( ) { switch (job) { case 1: m_Job1.Show(); break; case 2: m_Job2.Show(); break; } } public void Dispose() { m_Job1.Dispose(); m_Job2.Dispose(); new SelectRoleBehaviour().Show(); } }