public void CalcTaskPrgs(PlayerData pd, int rid) { TaskRewardData trd = TaskSys.instance.GetTaskRewardData(pd, rid); TaskRewardCfg trcfg = CfgSvc.Instance.GetTaskRewardCfg(rid); if (trd.prgs < trcfg.count) { trd.prgs += 1; CalcTaskArr(pd, trd); ServerSession session = CacheSvc.Instance.GetServerSessionByID(pd.id); if (session != null) { GameMsg msg = new GameMsg { cmd = (int)CMD.PshTaskPrgs, pshTaskPrgs = new PshTaskPrgs { taskArr = pd.taskArr } }; session.SendMsg(msg); } } }
public void RefreshUI(TaskRewardCfg trf, TaskRewardData trc) { rewardID = trf.ID; txtName.text = trf.taskName; txtExp.text = trf.exp.ToString(); txtCoin.text = "金币 " + trf.coin.ToString(); txtPrg.text = trc.progress + "/" + trf.count; float pec = trc.progress * 1.0f / trf.count; proVal.fillAmount = pec; bool taked = trc.taked; if (taked == false) { compTrans.gameObject.SetActive(false); if (trf.count != trc.progress) { takeBtn.interactable = false; } else { takeBtn.interactable = true; } } else { takeBtn.interactable = false; compTrans.gameObject.SetActive(true); } }
/// <summary> /// 更新玩家数据的任务进度 /// </summary> /// <param name="pd">玩家数据</param> /// <param name="tid">进度id</param> public void CalcTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); //获得玩家当前任务信息 TaskRewardCfg trc = cfgSvc.GetTaskRewardCfgData(tid); //获得任务模板 if (trd.prgs < trc.count) { //更新任务进度 trd.prgs++; CalcUpdatePlayerTaskArr(pd, trd); ServerSession session = cacheSvc.GetOnlineServerSession(pd.id); if (session != null) { session.SendMsg( new GameMsg { cmd = (int)CMD.PshTaskPrgs, pshTaskPrgs = new PshTaskPrgs { taskArr = pd.taskArr } } ); } } }
public void CalcTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(tid); if (trd.prgs < trc.count) { trd.prgs += 1; //更新任务进度 CalcTaskArr(pd, trd); ServerSession session = cacheSvc.GetOnlineServerSession(pd.id); if (session != null) { session.SendMsg(new GameMsg() { cmd = (int)CMD.PshTaskPrgs, pshTaskPrgs = new PshTaskPrgs() { taskArr = pd.taskArr } }); } } }
public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(tid); if (trd.prgs < trc.count) { trd.prgs += 1; // 更新任务进度 CalcTaskArr(pd, trd); return(new PshTaskPrgs { taskArr = pd.taskArr }); //ServerSession session = cacheSvc.GetOnlineServerSessions(pd.id); //if (session != null) //{ // session.SendMsg(new GameMsg // { // cmd = (int)CMD.PshTaskPrgs, // pshTaskPrgs = new PshTaskPrgs // { // taskArr = pd.taskArr // } // }); //} } else { return(null); } }
public void RefreshUI() { curTaskDataList.Clear(); verticalScrollBar.GetComponent <Scrollbar>().value = 1; for (int i = 0; i < itemGroupTrans.childCount; i++) { Destroy(itemGroupTrans.GetChild(i).gameObject); } List <TaskRewardData> todoList = new List <TaskRewardData>(); List <TaskRewardData> waitDoneList = new List <TaskRewardData>(); List <TaskRewardData> doneList = new List <TaskRewardData>(); for (int i = 0; i < playerData.taskArr.Length; i++) { string[] taskInfo = playerData.taskArr[i].Split('|'); TaskRewardData data = new TaskRewardData { ID = int.Parse(taskInfo[0]), progress = int.Parse(taskInfo[1]), taked = taskInfo[2].Equals("1"), }; if (data.taked == false) { if (data.progress == resSvc.GetTaskRewardCfg(data.ID).count) { waitDoneList.Add(data); } else { todoList.Add(data); } } else { doneList.Add(data); } } //将未完成任务、待领取任务与已完成任务按顺序加入列表 curTaskDataList.AddRange(waitDoneList); curTaskDataList.AddRange(todoList); curTaskDataList.AddRange(doneList); for (int j = 0; j < curTaskDataList.Count; j++) { GameObject itemTask = resSvc.LoadPrefab(PathDefine.ItemTaskPrefab); itemTask.transform.SetParent(itemGroupTrans); itemTask.transform.localPosition = Vector3.zero; itemTask.transform.localScale = Vector3.one; itemTask.name = "itemTask_" + j; TaskRewardData data = curTaskDataList[j]; TaskRewardCfg trf = resSvc.GetTaskRewardCfg(data.ID); itemTask.GetComponent <ItemTask>().RefreshUI(trf, data); } }
private void LoadAssetSucessCallBack(string assetName, object asset, float duration, object userData) { GameObject go = asset as GameObject; int index = -1; if (!go || !int.TryParse(userData.ToString(), out index)) { Debug.LogError("Sprite:" + assetName + "资源不存在"); } else { go = Instantiate(go); go.transform.SetParent(scrollTrans); go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.name = "taskItem_" + index; TaskRewardData trd = trdLst[index]; TaskRewardCfg trf = GameEntry.Res.GetTaskRewardCfg(trd.ID); SetText(GetTrans(go.transform, "txtName"), trf.taskName); SetText(GetTrans(go.transform, "txtPrg"), trd.prgs + "/" + trf.count); SetText(GetTrans(go.transform, "txtExp"), "奖励: 经验" + trf.exp); SetText(GetTrans(go.transform, "txtCoin"), "金币" + trf.coin); Image imgPrg = GetTrans(go.transform, "prgBar/prgVal").GetComponent <Image>(); float prgVal = trd.prgs * 1.0f / trf.count; imgPrg.fillAmount = prgVal; Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>(); btnTake.onClick.AddListener(() => { ClickTakeBtn(go.name); }); Transform transComp = GetTrans(go.transform, "imgComp"); if (trd.taked) { btnTake.interactable = false; SetActive(transComp); } else { SetActive(transComp, false); if (trd.prgs == trf.count) { btnTake.interactable = true; } else { btnTake.interactable = false; } } GameEntry.Resource.UnloadAsset(asset); } }
//更新玩家任务进度数据 public void CalcUpdatePlayerTaskArr(PlayerData pd, TaskRewardData trd) { string result = trd.id + "|" + trd.prgs + "|" + (trd.taked ? 1 : 0); int index = 0; for (int i = 0; i < pd.taskArr.Length; i++) { string[] taskInfo = pd.taskArr[i].Split('|'); if (int.Parse(taskInfo[0]) == trd.id) { index = i; break; } } pd.taskArr[index] = result; }
public void CalcTaskArray(PlayerData playerData, TaskRewardData taskData)//更新任务进度数据 { string result = taskData.Id + "|" + taskData.Prangs + "|" + (taskData.Tasked ? 1 : 0); int index = -1; for (int i = 0; i < playerData.TaskArray.Length; i++) { string[] taskInfo = playerData.TaskArray[i].Split('|'); if (int.Parse(taskInfo[0]) == taskData.Id) { index = i; break; } } playerData.TaskArray[index] = result; }
public void CalcTaskArr(PlayerData pd, TaskRewardData trd) { string result = trd.ID + "|" + trd.prgs + '|' + (trd.taked ? 1 : 0); int index = -1; for (int i = 0; i < pd.TaskArr.Count; i++) { string[] taskinfo = pd.TaskArr[i].Split('|'); if (int.Parse(taskinfo[0]) == trd.ID) { index = i; break; } } pd.TaskArr[index] = result; }
public void ReqTaskReward(MsgPack msgPack) { ReqTaskReward data = msgPack.msg.reqTaskReward; GameMsg msg = new GameMsg() { cmd = (int)CMD.RspTaskReward }; PlayerData pd = cacheSvc.GetPlayerDataBySession(msgPack.session); //获得任务模板 TaskRewardCfg trc = cfgSvc.GetTaskRewardCfgData(data.taskId); //获得玩家当前任务信息 TaskRewardData trd = CalcTaskRewardData(pd, data.taskId); if ((trd.prgs == trc.count) && (!trd.taked)) { //任务进度完成,且奖励未被领取 pd.coin += trc.coin; PECommon.CalExp(pd, trc.exp); trd.taked = true; CalcUpdatePlayerTaskArr(pd, trd); if (!cacheSvc.UpdataPlayerData(pd.id, pd)) { //数据库写入失败 msg.err = (int)ErrorCode.UpdateDBError; } else { msg.rspTaskReward = new RspTaskReward { coin = pd.coin, exp = pd.exp, lv = pd.lv, taskArr = pd.taskArr }; } } else { //客户端数据异常 msg.err = (int)ErrorCode.ClientDataError; } msgPack.session.SendMsg(msg); }
public void ReqTakeTaskReward(MsgPack pack) { ReqTakeTaskReward data = pack.Msg.reqTakeTaskReward; GameMsg msg = new GameMsg() { cmd = (int)CMD.RspTakeTaskReward }; PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.Session); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(data.tid); TaskRewardData trd = CalcTaskRewardData(pd, data.tid); if (trd.prgs == trc.count && !trd.taked) { pd.coin += trc.coin; PECommon.CalcExp(pd, trc.exp); trd.taked = true; //更新任务进度数据 CalcTaskArr(pd, trd); if (!cacheSvc.UpdatePlayerData(pd.id, pd)) { msg.err = (int)ErrorCode.UpdateDBError; } else { RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward() { coin = pd.coin, lv = pd.lv, exp = pd.exp, taskArr = pd.taskArr }; msg.rspTakeTaskReward = rspTakeTaskReward; } } else { msg.err = (int)ErrorCode.ClientDataError; } pack.Session.SendMsg(msg); }
public void RefreshUI(object sender, GameEventArgs e) { OnRefreshUIFormEventArgs ne = e as OnRefreshUIFormEventArgs; if ((System.Object)sender != this && ne.formId != UIFormId.TaskForm) { return; } trdLst.Clear(); List <TaskRewardData> todoLst = new List <TaskRewardData>(); List <TaskRewardData> doneLst = new List <TaskRewardData>(); //1|0|0 for (int i = 0; i < m_TaskFormData.PlayerData.TaskArr.Count; i++) { string[] taskInfo = m_TaskFormData.PlayerData.TaskArr[i].Split('|'); TaskRewardData trd = new TaskRewardData { ID = int.Parse(taskInfo[0]), prgs = int.Parse(taskInfo[1]), taked = taskInfo[2].Equals("1") }; if (trd.taked) { doneLst.Add(trd); } else { todoLst.Add(trd); } } trdLst.AddRange(todoLst); trdLst.AddRange(doneLst); for (int i = 0; i < scrollTrans.childCount; i++) { Destroy(scrollTrans.GetChild(i).gameObject); } for (int i = 0; i < trdLst.Count; i++) { GameEntry.Res.LoadPrefab(PathDefine.TaskItemPrefab, LoadAssetSucessCallBack, LoadAssetFailCallBack, i); } }
public void ReqTakeTaskReward(PackMsg pack) { ReqTakeTaskReward data = pack.msg.reqTakeTaskReward; ServerSession session = pack.session; GameMsg msg = new GameMsg { cmd = (int)CMD.RspTakeTaskReward, }; int rewardID = data.rid; PlayerData playerData = cacheSvc.GetPlayerDataCache(session); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(rewardID); TaskRewardData trd = GetTaskRewardData(playerData, rewardID); //安全验证 if (trd.progress == trc.count && !trd.taked) { playerData.coin += trc.coin; PECommon.UpdateExp(playerData, trc.exp); trd.taked = true; //更新任务进度数据 CalcTaskArr(playerData, trd); if (!cacheSvc.UpdatePlayerData(playerData.id, playerData)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.rspTakeTaskReward = new RspTakeTaskReward { coin = playerData.coin, exp = playerData.exp, lv = playerData.lv, hp = playerData.hp, taskArr = playerData.taskArr, }; session.SendMsg(msg); } } else { msg.err = (int)ErrorCode.ClientDataError; } }
public void RequestTaskReward(MsgPack msgPack) { RequestTask data = msgPack.Msg.RequestTask; NetMsg netMsg = new NetMsg { cmd = (int)Command.ResponseTask }; PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session); TaskRewardCfg taskCfg = _resCfgSvc.GetTaskData(data.TaskId); TaskRewardData taskData = CalcTaskRewardData(playerData, data.TaskId); if (taskData.Prangs == taskCfg.Count && !taskData.Tasked) { playerData.Coin += taskCfg.Coin; PeRoot.CalcExp(playerData, taskCfg.Exp); playerData.Diamond += taskCfg.Diamond; taskData.Tasked = true; CalcTaskArray(playerData, taskData); if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData)) { netMsg.err = (int)ErrorCode.UpdateDbError; } else { ResponseTask responseTask = new ResponseTask { Coin = playerData.Coin, Level = playerData.Level, Diamond = playerData.Diamond, Exp = playerData.Exp, TaskArray = playerData.TaskArray, }; netMsg.ResponseTask = responseTask; } } else { netMsg.err = (int)ErrorCode.ClientDataError; } msgPack.Session.SendMsg(netMsg); }
public void ReqTakeTaskReward(MsgPack pack) { ReqTakeTaskReward data = pack.msg.reqTakeTaskReward; GameMsg msg = new GameMsg { cmd = (int)CMD.RspTakeTaskReward }; PlayerData playerData = cacheSvc.GetPlayerDataBySession(pack.session); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(data.rid); TaskRewardData trd = CalcTaskRewardData(playerData, data.rid); if (trd.prgs == trc.count && trd.isTakenReward == false) { playerData.coin += trc.coin; Common.CalcExp(playerData, trc.exp); trd.isTakenReward = true; // 更新任务进度数据 CalcTaskArr(playerData, trd); if (cacheSvc.UpdatePlayerData(playerData.id, playerData) == true) { RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward { coin = playerData.coin, lv = playerData.lv, exp = playerData.exp, taskArr = playerData.taskArr }; msg.rspTakeTaskReward = rspTakeTaskReward; } else { msg.err = (int)ErrorCode.UpdateDBError; } } else { msg.err = (int)ErrorCode.ClientDataError; } pack.session.SendMsg(msg); }
public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(tid); if (trd.prgs < trc.count) { trd.prgs += 1; //更新任务进度 CalcTaskArr(pd, trd); PshTaskPrgs pshTaskPrgs = new PshTaskPrgs(); pshTaskPrgs.TaskArr.SetRepeated <string>(pd.TaskArr); return(pshTaskPrgs); } else { return(null); } }
public void CalcTaskArr(PlayerData playerData, TaskRewardData trd) { string result = trd.ID + "|" + trd.prgs + "|" + (trd.isTakenReward ? 1 : 0); int index = -1; for (int i = 0; i < playerData.taskArr.Length; i++) { string[] taskInfo = playerData.taskArr[i].Split('|'); // 1|0|0 if (int.Parse(taskInfo[0]) == trd.ID) { index = i; break; } } playerData.taskArr[index] = result; }
////更新任务进度 //public void CalcTaskProgs(PlayerData pd,int rid) //{ // TaskRewardData trd = GetTaskRewardData(pd, rid); // TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(rid); // if(trd.progress < trc.count) // { // trd.progress += 1; // } // CalcTaskArr(pd,trd); // ServerSession session = cacheSvc.GetOnLineServerSession(pd.id); // GameMsg msg = new GameMsg // { // cmd = (int)CMD.PshTaskProgs, // pshTaskProgs = new PshTaskProgs // { // taskArr = pd.taskArr, // } // }; // if(session != null) // { // session.SendMsg(msg); // } //} //更新任务进度 public PshTaskProgs CalcTaskProgs(PlayerData pd, int rid) { TaskRewardData trd = GetTaskRewardData(pd, rid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(rid); if (trd.progress < trc.count) { trd.progress += 1; CalcTaskArr(pd, trd); return(new PshTaskProgs { taskArr = pd.taskArr, }); } else { return(null); } }
public PshTask GetTaskPrangs(PlayerData playerData, int taskId) { TaskRewardData taskData = CalcTaskRewardData(playerData, taskId); TaskRewardCfg taskCfg = _resCfgSvc.GetTaskData(taskId); if (taskData.Prangs < taskCfg.Count) { taskData.Prangs += 1; CalcTaskArray(playerData, taskData); return(new PshTask { TaskArray = playerData.TaskArray }); } else { return(null); } }
public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(tid); if (trd.prgs < trc.count) { trd.prgs += 1; //更新任务进度 CalcTaskArr(pd, trd); return(new PshTaskPrgs { taskArr = pd.taskArr }); } else { return(null); } }
public void CalcTaskPrgs(PlayerData pd, int tid) { TaskRewardData trd = CalcTaskRewardData(pd, tid); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(tid); if (trd.prgs < trc.count) { trd.prgs += 1; //更新任务进度 CalcTaskArr(pd, trd); ClientSocket session = cacheSvc.GetOnlineServersession(pd.Id); if (session != null) { PshTaskPrgs PshTaskPrgs = new PshTaskPrgs(); PshTaskPrgs.TaskArr.SetRepeated <string>(pd.TaskArr); session.SendMsg(PshTaskPrgs); } } }
public TaskRewardData CalcTaskRewardData(PlayerData playerData, int id)//解析数据 { TaskRewardData data = null; foreach (var t in playerData.TaskArray) { string[] taskInfo = t.Split('|'); if (int.Parse(taskInfo[0]) == id) { data = new TaskRewardData { Id = int.Parse(taskInfo[0]), Prangs = int.Parse(taskInfo[1]), Tasked = taskInfo[2].Equals("1"), }; break; } } return(data); }
public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid) { TaskRewardData trd = null; for (int i = 0; i < pd.taskArr.Length; i++) { string[] taskinfo = pd.taskArr[i].Split('|'); //1|0|0 if (int.Parse(taskinfo[0]) == rid) { trd = new TaskRewardData { ID = int.Parse(taskinfo[0]), prgs = int.Parse(taskinfo[1]), taked = taskinfo[2].Equals("1") }; break; } } return(trd); }
public void CalcTaskPrangs(PlayerData playerData, int taskId) { TaskRewardData taskData = CalcTaskRewardData(playerData, taskId); TaskRewardCfg taskCfg = _resCfgSvc.GetTaskData(taskId); if (taskData.Prangs < taskCfg.Count) { taskData.Prangs += 1; CalcTaskArray(playerData, taskData); ServerSession session = _cacheSvc.GetOnLineServerSessions(playerData.Id); session?.SendMsg(new NetMsg { cmd = (int)Command.PshTask, PshTask = new PshTask { TaskArray = playerData.TaskArray } }); } }
//根据rid获取玩家的任务奖励数据 public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid) { TaskRewardData trd = null; for (int i = 0; i < pd.taskArr.Length; i++) { string[] taskInfo = pd.taskArr[i].Split('|'); if (int.Parse(taskInfo[0]) == rid) { //获得玩家当前任务信息 trd = new TaskRewardData { id = rid, prgs = int.Parse(taskInfo[1]), taked = taskInfo[2].Equals("1"), }; break; } } return(trd); }
public void ReqTakeTaskReward(MsgPack pack) { ReqTakeTaskReward data = (ReqTakeTaskReward)pack.msg; SCPacketBase msg = new RspTakeTaskReward(); PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session); TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(data.Rid); TaskRewardData trd = CalcTaskRewardData(pd, data.Rid); if (trd.prgs == trc.count && !trd.taked) { pd.Coin += trc.coin; KDCommon.CalcExp(pd, trc.exp); trd.taked = true; //更新任务进度数据 CalcTaskArr(pd, trd); if (!cacheSvc.UpdatePlayerData(pd.Id, pd)) { msg.error = (int)ErrorCode.UpdateDBError; } else { RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward { Coin = pd.Coin, Lv = pd.Lv, Exp = pd.Exp, }; rspTakeTaskReward.TaskArr.SetRepeated <string>(pd.TaskArr); msg = rspTakeTaskReward; } } else { msg.error = (int)ErrorCode.ClientDataError; } pack.session.SendMsg(msg); }
public void ReqTakeTaskReward(MsgPack pack) { ReqTakeTaskReward data = pack.msg.reqTakeTaskReward; GameMsg msg = new GameMsg { cmd = (int)CMD.RspTakeTaskReward, }; PlayerData pd = CacheSvc.Instance.GetPlayerDataBySession(pack.session); TaskRewardCfg trcfg = CfgSvc.Instance.GetTaskRewardCfg(data.rid); TaskRewardData trd = GetTaskRewardData(pd, data.rid); if (trd.prgs == trcfg.count && !trd.taked) { pd.coin += trcfg.coin; PECommon.CalcExp(pd, trcfg.exp); trd.taked = true; CalcTaskArr(pd, trd); if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, pack.session)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.rspTakeTaskReward = new RspTakeTaskReward { coin = pd.coin, exp = pd.exp, lv = pd.lv, taskArr = pd.taskArr, }; } } else { msg.err = (int)ErrorCode.ClientDataError; } pack.session.SendMsg(msg); }
public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid) { Google.Protobuf.Collections.RepeatedField <string> aabb; //Google.Protobuf.Collections.RepeatedField<string> aa = pd.TaskArr; TaskRewardData trd = null; for (int i = 0; i < pd.TaskArr.Count; i++) { var a = pd.TaskArr; string[] taskinfo = pd.TaskArr[i].Split('|'); //1|0|0 if (int.Parse(taskinfo[0]) == rid) { trd = new TaskRewardData { ID = int.Parse(taskinfo[0]), prgs = int.Parse(taskinfo[1]), taked = taskinfo[2].Equals("1") }; break; } } return(trd); }
//刷新UI public void Refresh() { if (!GetWindowState()) { return; } m_trdLst.Clear(); for (int i = 0; i < scrollTrans.childCount; i++) { Destroy(scrollTrans.GetChild(i).gameObject); } List <TaskRewardData> todoLst = new List <TaskRewardData>(); //未完成任务 List <TaskRewardData> doneLst = new List <TaskRewardData>(); //完成任务 string[] taskArr = m_pd.taskArr; for (int i = 0; i < taskArr.Length; i++) { string[] taskInfo = m_pd.taskArr[i].Split('|'); TaskRewardData trd = new TaskRewardData() { id = int.Parse(taskInfo[0]), prgs = int.Parse(taskInfo[1]), taked = taskInfo[2].Equals("1") //等于1就是完成的任务 }; //是否完成 if (trd.taked) { doneLst.Add(trd); } else { todoLst.Add(trd); } } m_trdLst.AddRange(todoLst); m_trdLst.AddRange(doneLst); //实例化Prefab并更新它的UI for (int i = 0; i < m_trdLst.Count; i++) { GameObject go = resSvc.LoadPrefab(PathDefine.TaskItemPrefab); go.transform.SetParent(scrollTrans); go.transform.localPosition = Vector3.zero; go.transform.localScale = Vector3.one; go.name = "taskItem_" + m_trdLst[i].id; TaskRewardData trd = m_trdLst[i]; TaskRewardCfg trc = resSvc.GetTaskrewardCfg(trd.id); SetText(GetTrans(go.transform, "txtName"), trc.taskName); SetText(GetTrans(go.transform, "txtPro"), trd.prgs + "/" + trc.count); SetText(GetTrans(go.transform, "txtExp"), "奖励: 经验" + trc.exp); SetText(GetTrans(go.transform, "txtCoin"), "金币" + trc.coin); Image imgPrg = GetTrans(go.transform, "prgBarBg/prgBar").GetComponent <Image>(); float proVal = trd.prgs * 1.0f / trc.count; imgPrg.fillAmount = proVal; Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>(); btnTake.onClick.AddListener(() => OnClickTakeBtn(go.name)); Transform transComp = GetTrans(go.transform, "imgComp"); if (trd.taked) { btnTake.interactable = false; SetActive(transComp); } else { SetActive(transComp, false); if (trd.prgs == trc.count) { btnTake.interactable = true; } else { btnTake.interactable = false; } } } }