IEnumerator UpdateModelIterator() { waitingToCloneModel = true; if (null != viewCmpt) { _meshControllers = viewCmpt.GetComponentsInChildren <WhiteCat.CreationController>(); if (null != _meshControllers) { for (int i = 0; i < _meshControllers.Length; i++) { if (_meshControllers[i] != null && !_meshControllers[i].isBuildFinished) { //lz-2016.09.07 如果有ISO,并且每创建完成,就等待创建完成 yield return(null); i--; } } } _meshControllers = null; //lz-2016.09.14 克隆前需要等一帧,克隆后不需要等了 yield return(null); //lz-2016.09.07 克隆新模型,刷新SkinnedMeshRenderer _newViewModel = PeViewStudio.CloneCharacterViewModel(viewCmpt); if (_newViewModel) { _newViewModel.transform.position = new Vector3(0, -1000, 0); var renderer = _newViewModel.GetComponent <SkinnedMeshRenderer>(); renderer.updateWhenOffscreen = true; } } if (_newViewModel) { if (_viewModel != null) { Destroy(_viewModel); } _viewModel = _newViewModel; _viewController.SetTarget(_viewModel.transform); mEqTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController); mEqTex.mainTexture = _viewController.RenderTex; mEqTex.enabled = true; _newViewModel = null; } waitingToCloneModel = false; }
void UpdateBodyCamera() { if (m_RefNpc == null || NpcEquipment == null || m_NpcCmpt == null) { m_NpcTex.enabled = false; return; } if (_viewModel != null) { Destroy(_viewModel); } _viewModel = PeViewStudio.CloneCharacterViewModel(m_ViewCmpt); if (_viewModel != null) { _viewController.SetTarget(_viewModel.transform); } m_NpcTex.mainTexture = _viewController.RenderTex; m_NpcTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController); m_NpcTex.enabled = true; }
/// <summary> /// 在 update 中调用. /// 检查到需要更新时, 先判断角色装备是否创建完整, 在创建完成后复制模型, 然后延迟一帧应用模型 /// </summary> void UpdateModel() { if (waitingToCloneModel) { if (!_newViewModel) { if (_meshControllers != null) { for (int i = 0; i < _meshControllers.Length; i++) { if (_meshControllers[i] != null && !_meshControllers[i].isBuildFinished) { return; } } _meshControllers = null; } if (_delay == 0) { _newViewModel = PeViewStudio.CloneCharacterViewModel(viewCmpt); //lz-2016.10.11 有可能为空【错误 #3973】 if (null != _newViewModel) { _newViewModel.transform.position = new Vector3(0, -1000, 0); var renderer = _newViewModel.GetComponent <SkinnedMeshRenderer>(); renderer.updateWhenOffscreen = true; _delay = 0; } } else { _delay--; return; } } if (_newViewModel) { if (_delay == 0) { if (_viewModel != null) { Destroy(_viewModel); } _viewModel = _newViewModel; _viewController.SetTarget(_viewModel.transform); mEqTex.GetComponent <WhiteCat.UIViewController>().Init(_viewController); bone2DObjects.Init(_viewController, _viewModel, playerArmorCmpt); mEqTex.mainTexture = _viewController.RenderTex; _newViewModel = null; StopRefreshEquipment(); } else { _delay--; return; } } } }