/// <summary> /// 播放登场动画 /// </summary> private void PlayDebutAnimation() { if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { return; } for (int i = 0; i < mActors.Count; i++) { if (i == mSelectIndex) { // 没有出场动画,先直接播放待机 //mActors[i].CrossFade(DEBUT_NEXT_ANIMATION); // 播放登场动画 var animation_ctrl = mActors[i].AnimationCtrl; if (animation_ctrl != null) { animation_ctrl.CullMode = AnimatorCullingMode.AlwaysAnimate; } mIsPlayingDebut = true; mIsPlayDebutIdle = false; mActors[i].Play(DEBUT_ANIMATION); } } }
/// <summary> /// 初始化 /// </summary> private void Init() { SetData(); ActorPos = transform; // 查找主光源 Vector3 light_dir = new Vector3(0, -1, -1); var shadow_light_info = GetComponent <ShadowLightInfo>(); if (shadow_light_info != null) { light_dir = shadow_light_info.LightDir; } ShadowManager.Instance.SetRealShadow(ActorPos, light_dir, 1 << LayerMask.NameToLayer("UIPreview")); ModelHelper.ClearChildren(ActorPos); mLoadedNum = 0; LoadFinish = false; if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { LoadFinish = true; return; } for (int i = 0; i < mActorNum; i++) { CreateActor(i); } PreloadTimelines(); }
private void ShowNoticePanel(LoginNoticeData data, bool isFromServer = false) { if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { return; } GameDebug.Log("弹出游戏公告窗口"); UIManager.Instance.ShowWindow("UILoginNoticeWindow", data, isFromServer); //if (string.IsNullOrEmpty(data.content) == false) //{ //} }
protected override void ResetUI() { base.ResetUI(); if (xc.Const.Region == xc.RegionType.SEASIA) { if (xc.Const.Language == xc.LanguageType.VIETNAMESE) { mHealthTips.SetActive(true); } } ui.ugui.UIManager.GetInstance().ShowLoadingBK(true); ui.ugui.UIManager.GetInstance().SetLoadingTip(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_89")); // 删除加载的角色 for (int i = 0; i < mActorGameObjects.Count; ++i) { ClientModel actor = mActorGameObjects [i]; if (actor != null) { actor.mVisibleCtrl.SetActorVisible(true, VisiblePriority.EXCEPT); ActorManager.Instance.DestroyActor(actor.UID); mActorGameObjects [i] = null; } } // 设置角色列表的数据 SetData(Game.GetInstance().CharacterList); UpdateServerName(); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { MainGame.HeartBehavior.StartCoroutine(DelayShowWindow()); } else { MainGame.HeartBehavior.StartCoroutine(WaitForSelectAcotor()); } // 进入选角场景 ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.EnterSelectActorScene); }
private static void OnGetLoginNoticeInfo(string url, string error, string reply, object userData) { bool fromServerList = (bool)userData; if (string.IsNullOrEmpty(error) == false) { UIManager.Instance.ShowWaitScreen(false); GameDebug.LogError("获取游戏公告失败: " + error); string err = DBConstText.GetText("GET_LOGIN_NOTICE_INFO_FAIL"); #if UNITY_EDITOR err += error; #endif UIWidgetHelp.GetInstance().ShowNoticeDlg(err); return; } LoginNoticeData data; if (!CheckData(reply, out data)) { UIManager.Instance.ShowWaitScreen(false); GameDebug.LogError("获取游戏公告失败: " + error); string err = DBConstText.GetText("GET_LOGIN_NOTICE_INFO_FAIL"); UIWidgetHelp.GetInstance().ShowNoticeDlg(err); return; } if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { return; } //获取成功解析成功 UIManager.Instance.ShowWindow("UILoginNoticeWindow", data, false); //if (string.IsNullOrEmpty(data.content) == false) //{ //} }
public void ShowActorPic(uint roleId) { if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { for (int i = 0; i < mActorPic.Count; i++) { if (mActorPic[i] != null) { // 需要判断image.texture是否已加载成功; // gameObject.SetActive(false)会把已启动的协程停止,导致图片不会加载 RawImage image = mActorPic[i].GetComponent <RawImage>(); if (image != null && image.texture != null) { mActorPic[i].gameObject.SetActive(i == roleId); } } } } }
/// <summary> /// 窗口资源加载完毕后调用 /// </summary> public virtual void InitData() { IsLoadDone = true; WinState = WinowState.ResLoadDone; canvas = mUIObject.GetComponent <Canvas>(); if (firstShow) { ///第一次显示在这里计算层级 CaculateLayer(); } InitUI(); var all_shield_widget = DBWidgetShield.Instance.GetAllWidget(this.mWndName); if (all_shield_widget != null) { foreach (var info in all_shield_widget) { var widget = mUIObject.transform.Find(info.path); if (widget != null) { if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { if ((info.is_audit && AuditManager.Instance.ContainShieldWId((uint)info.id)) || !info.is_audit) { widget.gameObject.SetActive(false); } } else { if (!info.is_audit) { widget.gameObject.SetActive(false); } } } } } }
// 所有的角色都加载完毕 public void OnAllActorLoaded() { if (SelectActorScene.Instance != null) { ResetPos(); } UIManager.GetInstance().ShowLoadingBK(false); if (!IsShow) { return; } int index = mSelectIndex; mSelectIndex = -1; OnClickActor(index); //test //Game.Instance.GameObjectControl.scene.SetActive(false); //Game.Instance.GameObjectControl.uiPanel.SetActive(true); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { GameObjectControl control = Game.Instance.GameObjectControl; if (control != null) { if (control.scene != null && control.uiPanel != null) { control.scene.SetActive(!AuditManager.Instance.Open); control.uiPanel.SetActive(AuditManager.Instance.Open); } } } }
// 创建对应的角色 public void CreateActor(int index) { if (index >= 0 && index < mData.Count) { //if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetRoleList() != null) //{ // List<uint> npc_id = SDKHelper.GetRoleList(); // int rid = (int)mData[index].rid - 1; // UnitID actor_uid = ClientModel.CreateClientModelByActorIdForLua(ActorHelper.RoleIdToCreateTypeId(npc_id[rid]), OnResLoaded); // var client_model = ActorManager.Instance.GetActor(actor_uid) as ClientModel; // client_model.AttackSpeed = 1.0f; // mActorGameObjects.Add(client_model); // return; //} uint type_idx = ActorHelper.RoleIdToTypeId(mData [index].rid); List <uint> model_list = new List <uint>(); List <uint> fashion_list = new List <uint>(); ActorHelper.GetModelFashionList(mData[index].shows, model_list, fashion_list); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel() && SDKHelper.GetFashion() != 0) { fashion_list.Add(SDKHelper.GetFashion()); } var model_id_list = ActorManager.ReplaceModelList(model_list, (Actor.EVocationType)mData [index].rid, true); ClientModel actor = ClientModel.CreateClientModel(type_idx, mData[index].uuid, model_id_list, fashion_list, mData[index].effects, OnResLoaded, false, true); // 攻速必须为1,不然出场特效与动作匹配不上 actor.AttackSpeed = 1.0f; mActorGameObjects.Add(actor); actor.Freeze(DBActor.UF_ANIMATION); } }
protected override void InitUI() { base.InitUI(); GameObject childObj = FindChild("StartButton"); mStartButton = childObj.GetComponent <Button>(); mRemoveButton = FindChild("RemoveButton").GetComponent <Button>(); mExitButton = FindChild("ExitButton").GetComponent <Button>(); m_VocationDescRoot = FindChild("VocationDesc"); mPowerText = FindChild("PowerText").GetComponent <Text>(); mHealthTips = FindChild("HealthTips"); mHealthTips.SetActive(false); for (int i = 0; i < ACTOR_MAX_NUM; ++i) { string btnName = string.Format("Actor{0}Button", i + 1); childObj = FindChild(btnName); Button btn = childObj.GetComponent <Button>(); mActorButton.Add(btn); //mActorGameObjects.Add(null); } mServerText = FindChild("ServerText").GetComponent <Text>(); if (mUIObject.GetComponent <AutoScale>() == null) { mUIObject.AddComponent <AutoScale>(); } for (int i = 0; i < mActorButton.Count; ++i) { int actor_index = i; mActorButton[i].onClick.AddListener(() => { OnClickActor(actor_index); }); } mStartButton.onClick.AddListener(OnClickStart); mRemoveButton.onClick.AddListener(OnClickRemove); mExitButton.onClick.AddListener(OnClickExit); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { for (int i = 0; i < 3; i++) { GameObject go = FindChild("ActorPic" + (i + 1).ToString()); if (go != null) { LoadMaJiaImage majia = go.AddComponent <LoadMaJiaImage>(); var picName = string.Format("ActorPic{0}.png", (i + 1)); majia.mPath = ResNameMapping.Instance.GetMappingName(picName); majia.SetFailCallBack(() => { RawImage image = majia.GetComponent <RawImage>(); if (image != null) { image.color = new Color(0, 0, 0, 0); } }); mActorPic.Add(go); } } } Game.GetInstance().SubscribeNetNotify(NetMsg.MSG_DELETE_ROLE, HandleDeleteRole); }
/// <summary> /// 点击角色职业的按钮 /// </summary> /// <param name="vocation"></param> void OnClickActorBtn(uint vocation) { // 设置当前的CheckMask var cur_select_btn = mActorButtons[vocation].transform; cur_select_btn.Find("CheckMask").gameObject.SetActive(true); cur_select_btn.Find("Background").gameObject.SetActive(false); if (mVocationId == vocation) { return; } // 设置之前的CheckMask if (mVocationId != 0) { var last_select_btn = mActorButtons[mVocationId].transform; last_select_btn.Find("CheckMask").gameObject.SetActive(false); last_select_btn.Find("Background").gameObject.SetActive(true); } if (CreateActorScene.Instance && CreateActorScene.Instance.SelectActorByVocation(vocation, () => { if (IsShow == true) { mRightButtom.SetActive(true); mRight.SetActive(true); } })) { if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { for (int i = 0; i < mActorPic.Count; i++) { if (mActorPic[i] != null) { RawImage image = mActorPic[i].GetComponent <RawImage>(); if (image != null && image.texture != null) { mActorPic[i].gameObject.SetActive(i + 1 == vocation); } } } } mVocationId = vocation; RequestRoleName(); PreviewLight.SelectLight(1, mVocationId); RefreshDescription(); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { return; } mRightButtom.SetActive(false); mRight.SetActive(false); if (AuditManager.Instance.AuditAndIOS() == false) { mRightButtom.SetActive(true); mRight.SetActive(true); } } }
//-------------------------------------------------------- // 内部调用 //-------------------------------------------------------- IEnumerator WaitActorLoad() { while (CreateActorScene.Instance == null || CreateActorScene.Instance.LoadFinish == false || CreateActorScene.Instance.TimelinesIsLoadFinished == false) { yield return(null); } var isAuditAndIos = AuditManager.Instance.AuditAndIOS(); if (!isAuditAndIos || (isAuditAndIos && !SDKHelper.GetSwitchModel())) { var preload_infos = DBPreloadInfo.Instance.PreloadInfos; if (preload_infos.Count > 0) { mPreloadAssetResource.Clear(); foreach (var info in preload_infos) { var object_asset = new AssetResource(); mPreloadAssetResource.Add(object_asset); MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset("Assets/" + info.asset_path, typeof(UnityEngine.Object), object_asset)); } float star_wait_time = Time.unscaledTime; // 等待所有资源加载完毕 while (true) { // 最多等待20s if (Time.unscaledTime - star_wait_time > 20.0f) { Debug.LogError("WaitActorLoad: wait preload asset for long time"); break; } bool all_loaded = true; foreach (var info in mPreloadAssetResource) { if (info.asset_ == null) { all_loaded = false; break; } } if (all_loaded) { break; } else { yield return(null); } } } } if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { GameObjectControl control = Game.Instance.GameObjectControl; if (control != null) { if (control.scene != null && control.uiPanel != null) { control.scene.SetActive(!AuditManager.Instance.Open); control.uiPanel.SetActive(AuditManager.Instance.Open); } } } //int[] actorList = new int[] { 2, 1, 3 }; if (AuditManager.Instance.AuditAndIOS()) { List <uint> actorList = SDKHelper.GetRoleList(); if (actorList != null && actorList.Count >= 1) { mDefaultSelectIndex = (int)actorList[0]; } } OnClickActorBtn((uint)mDefaultSelectIndex); // 等待一帧才隐藏loading界面,避免播放剧情前穿帮 mHideLoadingBKCoroutine = MainGame.HeartBehavior.StartCoroutine(EndFrameHideLoadingBK()); }
protected override void InitUI() { base.InitUI(); mEnterGameButton = FindChild("EnterGameButton").GetComponent <Button>(); mExitButton = FindChild("ExitButton").GetComponent <Button>(); mGenerateNameButton = FindChild("GenerateNameButton").GetComponent <Button>(); mNameInputField = FindChild("NameInputField").GetComponent <InputField>(); mVocationDesc = FindChild("VocationDesc").transform; mRightButtom = FindChild("RightButtom"); mRight = FindChild("Right"); mHealthTips = FindChild("HealthTips"); mHealthTips.SetActive(false); mCreateNewRoleButton = FindChild("CreateNewRoleButton").GetComponent <Button>(); mCreateNewRoleButton.gameObject.SetActive(false); // 获取最大可创建角色数量 var role_ids = GameConstHelper.GetUintList("GAME_AVAILABLE_ROLE_ID"); mActorNum = role_ids.Count; // 获取创角按钮 mActorButtons.Clear(); if (AuditManager.Instance.AuditAndIOS()) { for (int i = 0; i < mActorNum; ++i) { var btn_game_object = FindChild(string.Format("VocationButton{0}", i + 1)); if (btn_game_object != null) { btn_game_object.gameObject.SetActive(false); } } //int[] actorList = new int[] { 2, 1 ,3 }; List <uint> actorList = SDKHelper.GetRoleList(); if (actorList != null) { bool isShowActorBtn = actorList.Count > 1; for (int i = 0; i < actorList.Count; i++) { int career = (int)actorList[i]; var btn_game_object = FindChild(string.Format("VocationButton{0}", career)); if (btn_game_object != null) { btn_game_object.gameObject.SetActive(isShowActorBtn); btn_game_object.transform.Find("CheckMask").gameObject.SetActive(false); btn_game_object.transform.Find("Background").gameObject.SetActive(true); mActorButtons.Add((uint)career, btn_game_object.GetComponent <Button>()); } } } } else { for (int i = 0; i < mActorNum; ++i) { var btn_game_object = FindChild(string.Format("VocationButton{0}", i + 1)); if (btn_game_object != null) { mActorButtons.Add((uint)(i + 1), btn_game_object.GetComponent <Button>()); } } } mEnterGameButton.onClick.AddListener(OnClickEnterGameBtn); mExitButton.onClick.AddListener(OnClickExitBtn); mGenerateNameButton.onClick.AddListener(OnClickNameBtn); foreach (var kv in mActorButtons) { var btn = kv.Value; if (btn != null) { btn.onClick.AddListener(() => { OnClickActorBtn(kv.Key); }); } } mCreateNewRoleButton.onClick.AddListener(OnClickCreateNewRoleButton); if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel()) { for (int i = 0; i < 3; i++) { GameObject go = FindChild("ActorPic" + (i + 1).ToString()); if (go != null) { LoadMaJiaImage majia = go.AddComponent <LoadMaJiaImage>(); var picName = string.Format("ActorPic{0}.png", (i + 1)); majia.mPath = ResNameMapping.Instance.GetMappingName(picName); majia.SetFailCallBack(() => { RawImage image = majia.GetComponent <RawImage>(); if (image != null) { image.color = new Color(0, 0, 0, 0); } }); mActorPic.Add(go); } } } Game.GetInstance().SubscribeNetNotify(NetMsg.MSG_CREATE_ROLE, HandleCreateRole); ClientEventMgr.GetInstance().SubscribeClientEvent((int)ClientEvent.CE_RANDNAME_UPDATE, OnRandNameUpdate); }
/// <summary> /// 选中指定职业的角色 /// </summary> /// <param name="rid"></param> /// <returns></returns> public bool SelectActorByVocation(uint rid, Action finishCallback) { int index = -1; for (int i = 0; i < mRoleData.Count; i++) { if (mRoleData[i] != null) { if (mRoleData[i].rid == rid) { index = i; break; } } } if (index >= 0) { var bSkipLogAni = false; // 跳过登场动作 var isAuditAndIos = AuditManager.Instance.AuditAndIOS(); if (isAuditAndIos) { if (SDKHelper.GetSwitchModel()) { bSkipLogAni = true; } else { // SDKHelper.GetFashion() 有配置时,会改变创角初始模型,但该初始模型没有 "登场动作" if (SDKHelper.GetFashion() != 0) { bSkipLogAni = true; } } } if (bSkipLogAni) { if (finishCallback != null) { finishCallback(); } return(SelectActor(index)); } // 播放剧情动画 // 停止正在播放的 TimelineManager.Instance.Stop(); // 保存摄像机的位置和朝向 Vector3 cameraPositionBeforePlay = mCamera.transform.position; Quaternion cameraRotationBeforePlay = mCamera.transform.rotation; List <uint> timelineIds = xc.GameConstHelper.GetUintList("GAME_CREATE_ROLE_TIMELINE_IDS"); if (timelineIds.Count >= rid) { TimelineManager.Instance.Play(timelineIds[(int)rid - 1], () => { // 恢复摄像机的位置和朝向 mCamera.transform.position = cameraPositionBeforePlay; mCamera.transform.rotation = cameraRotationBeforePlay; if (finishCallback != null) { finishCallback(); } }); } return(SelectActor(index)); } else { GameDebug.LogError("CreateActorScene.MoveToActorByVocation 找不到Rid 对应的 Index,Rid:" + rid.ToString()); } return(false); }