private void OnUpdate() { Thread.Sleep(1000); while (isthreadStart) { if (threadStatus == FogBlendingThreadStatus.Update) { //Debug.Log("正在更新战争迷雾"); // 战争迷雾表示层 ClearVisibledRegion(); RevalMap(); GeneratePassedRegion(); //Debug.Log("更新表示层完成"); // 战争迷雾逻辑层 UpdateUnitVisibleStatus(); //Debug.Log("更新逻辑层"); // 更新人物在小地图上的点 ClearMinMap(); DrawMinMap(); //Debug.Log("更新小地图"); threadStatus = FogBlendingThreadStatus.Finished; } Thread.Sleep(100); //Debug.Log("战争迷雾休眠中"); } }
private void OnUpdate() { Thread.Sleep(1000); while (isthreadStart) { if (threadStatus == FogBlendingThreadStatus.Update) { // 战争迷雾表示层 ClearVisibledRegion(); RevalMap(); GeneratePassedRegion(); //Debug.Log("更新表示层完成"); // 战争迷雾逻辑层 UpdateUnitVisibleStatus(); //Debug.Log("更新逻辑层"); // 更新人物在小地图上的点 ClearMinMap(); DrawMinMap(); //Debug.Log("更新小地图"); // 对迷雾贴图进行高斯模糊 GaussianBlur(); // 将当前的迷雾状态保存到贴图的ba通道(分别对应rg通道) SaveCurrentFogState(); threadStatus = FogBlendingThreadStatus.Finished; } Thread.Sleep(100); } }
private void Update() { // 更新混合因子(blendFactor) blendFactor = Mathf.Clamp01(blendFactor + Time.deltaTime); fogMaterial.SetFloat("_BlendFactor", blendFactor); /* * 更新每个逻辑层物体的坐标 * 同时,每个单位在更新时都可能会被Remove, * 所以为了保证安全性,多了一个对null的判断 */ for (int i = 0; i < LogicalLayerObjects.Count();) { if (LogicalLayerObjects[i] != null) { LogicalLayerObjects[i].characterModel.Position = LogicalLayerObjects[i].transform.position; LogicalLayerObjects[i].characterModel.Rotation = LogicalLayerObjects[i].transform.rotation; i++; } else { RemoveFOVUnit(i); } } /* * 如果线程已经画好了战争迷雾当前帧的贴图, * 那么更新贴图,并通知线程继续更新 */ if (threadStatus == FogBlendingThreadStatus.Finished) { texture.SetPixels32(buffer0); texture.Apply(); minMapTexture.SetPixels32(minMapBuffer); minMapTexture.Apply(); threadStatus = FogBlendingThreadStatus.Update; blendFactor = 0; } }
private void Update() { #region 待重构~TODO~ ///* // * 更新每个逻辑层物体的坐标 // * 同时,每个单位在更新时都可能会被Remove, // * 所以为了保证安全性,多了一个对null的判断 //*/ //for (int i = 0; i < players.Count();) { // if (players[i] != null) { // playersPositions[i] = players[i].position; // i++; // } else { // RemoveListData<Transform>(i, players); // RemoveListData<Vector3>(i, playersPositions); // } //} //for (int i = 0; i < characterMonos.Count();) { // if (characterMonos[i] != null) { // fOVUnits[i].Position = characterMonos[i].transform.position; // i++; // } else { // RemoveListData<CharacterMono>(i, characterMonos); // RemoveListData<IFOVUnit>(i, fOVUnits); // } //} #endregion #region 重构完成 /* * 更新每个逻辑层物体的坐标 * 同时,每个单位在更新时都可能会被Remove, * 所以为了保证安全性,多了一个对null的判断 */ for (int i = 0; i < LogicalLayerObjects.Count();) { if (LogicalLayerObjects[i] != null) { LogicalLayerObjects[i].characterModel.Position = LogicalLayerObjects[i].transform.position; i++; } else { RemoveFOVUnit(i); } } #endregion /* * 如果线程已经画好了战争迷雾当前帧的贴图, * 那么更新贴图,并通知线程继续更新 */ if (threadStatus == FogBlendingThreadStatus.Finished) { texture.SetPixels32(buffer0); texture.Apply(); minMapTexture.SetPixels32(minMapBuffer); minMapTexture.Apply(); threadStatus = FogBlendingThreadStatus.Update; } }