VFX更新

This commit is contained in:
daixiawu 2025-06-19 21:50:22 +08:00
parent 48e59be163
commit 85f9ee7418
6 changed files with 744 additions and 279 deletions

View File

@ -253,7 +253,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View File

@ -235,7 +235,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

File diff suppressed because it is too large Load Diff

View File

@ -671,20 +671,24 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>();
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(city.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
if (actionParams.MapData == main.MapData)
{
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(city.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,city,wonderInfo.Exp);
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,city,wonderInfo.Exp);
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola,wonderInfo.Exp);
}
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola,wonderInfo.Exp);
@ -759,25 +763,29 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>();
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
if (main.MapData == actionParams.MapData)
{
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
//播放城市增加exp的动画
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,cityData,Table.Instance.QueryActionExp(_actionId));
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
//播放城市增加exp的动画
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,cityData,Table.Instance.QueryActionExp(_actionId));
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectile(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola);
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectile(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola);
actionParams.GridData.Resource = ResourceType.None;
actionParams.GridData.RenderMark = true;
}
actionParams.GridData.Resource = ResourceType.None;
actionParams.GridData.RenderMark = true;
return true;
}
@ -940,20 +948,24 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>();
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
if (main.MapData == actionParams.MapData)
{
var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2);
var v2 = Table.Instance.GridToWorld(g2);
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,cityData,cityExp);
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
Timer.Instance.TimerRegister(Main.CityLogic, () =>
{
main.MapRenderer.ROGridMap[g2.Id].SetBounceAnim();
Main.CityLogic.CityUpdateExp(actionParams.MapData,cityData,cityExp);
},
Table.Instance.AnimDataAssets.ProjectileCityExpMoveTime);
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola,cityExp);
//播放雾效和丢出cityexp的动画
actionParams.GridData.VFXRenderMarkFog = true;
main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola,cityExp);
}
return true;
@ -1548,12 +1560,23 @@ namespace Logic.Action
{
gridData.Resource = ResourceType.None;
gridData.RenderMark = true;
if (UnityEngine.Random.Range(0, 100) < 3)
if (UnityEngine.Random.Range(0, 100) < 50)
{
actionParams.PlayerData.PlayerWealth += 10;
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>();
if (actionParams.MapData == main.MapData)
{
var v1 = Table.Instance.GridToWorld(gridData);
//播放获得钱的动画
//main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,mapData,startPos,endPos,ProjectileType.Coin,ProjectileMoveType.CoinParabola,Main.CityLogic.GetCityStarsPerTurn(mapData,city),0.05f);
//main.MapRenderer.ProjectileManager.CreateProjectileMulti(main,actionParams.MapData,v1,v2,ProjectileType.CityExp,ProjectileMoveType.CityExpHighParabola,wonderInfo.Exp);
}
}
//给一个随机科技
else if (UnityEngine.Random.Range(0, 100) < 3)
else if (UnityEngine.Random.Range(0, 100) < 0)
{
var tt = new List<TechType>();
foreach (TechType tech in System.Enum.GetValues(typeof(TechType)))

View File

@ -17,15 +17,23 @@ public class DebugUI
public bool NeedShow = false;
private uint _turn = 999;
public DebugUI(Main main, MapData mapData)
{
_main = main;
_mapData = mapData;
Transform root = _main.UIManager.ROUIManager.transform;
Transform panelRoot = root.Find("DebugPanel");
if (panelRoot == null) return;
if (DebugCenter.Instance.DebugMode)
{
panelRoot.gameObject.SetActive(true);
}
else return;
RODebugUI = panelRoot.gameObject;
Button startButton = panelRoot.Find("ButtonStart")?.GetComponent<Button>();
@ -65,7 +73,7 @@ public class DebugUI
RODebugUI.SetActive(false);
}
}
private void ToggleMainPanel()
{
bool newState = !buttonGroup.activeSelf;
@ -85,6 +93,11 @@ public class DebugUI
UpdateAllUnitInfo();
}
if (key == "AllPlayer")
{
UpdateAllPlayerInfo();
}
}
@ -103,13 +116,21 @@ public class DebugUI
{
if (!DebugCenter.Instance.DebugMode)
return;
if(_main.UIManager.BottomInfoUI != null)
if(_main.UIManager.BottomInfoUI != null && RODebugUI.transform.Find("PanelGroup/Selected").gameObject.activeSelf)
_main.UIManager.BottomInfoUI.UpdateDebugInfo();
//return;
if (_mapData.PlayerMap.SelfPlayerData.Turn != _turn)
{
_turn = _mapData.PlayerMap.SelfPlayerData.Turn;
UpdateAllPlayerInfo();
}
}
public void UpdateAllUnitInfo()
{
var c = RODebugUI.transform.Find("PanelGroup/AllUnit/Scroll View/ViewPort/Content");
var c = RODebugUI.transform.Find("PanelGroup/AllUnit/Scroll View/Viewport/Content");
foreach (Transform child in c)
GameObject.Destroy(child.gameObject);
foreach (var unit in _mapData.UnitMap.UnitList)
@ -133,4 +154,39 @@ public class DebugUI
tmp.color = Color.white;
}
}
public void UpdateAllPlayerInfo()
{
var c = RODebugUI.transform.Find("PanelGroup/AllPlayer/Scroll View/Viewport/Content");
foreach (Transform child in c)
GameObject.Destroy(child.gameObject);
foreach (var player in _mapData.PlayerMap.PlayerDataList)
{
GameObject textObj = new GameObject("TMP_Child");
// 设置其父对象
textObj.transform.SetParent(c, false); // false 保留局部坐标
// 添加 RectTransformUI 元素需要)
RectTransform rectTransform = textObj.AddComponent<RectTransform>();
rectTransform.anchorMin = new Vector2(0.5f, 0.5f);
rectTransform.anchorMax = new Vector2(0.5f, 0.5f);
rectTransform.anchoredPosition = Vector2.zero;
// 添加 TextMeshProUGUI 组件
TextMeshProUGUI tmp = textObj.AddComponent<TextMeshProUGUI>();
tmp.text = $"-------- ID={player.Id}, Civ={player.PlayerCivId}, Force={player.PlayerForceId} --------\n";
tmp.text += $"Money = {player.PlayerWealth}, Stratery = ???\n";
tmp.text += " --- \n";
tmp.fontSize = 24;
tmp.alignment = TextAlignmentOptions.Center;
tmp.color = Color.white;
var fitter = textObj.AddComponent<ContentSizeFitter>();
fitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
//fitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;*/
}
}
}

View File

@ -53,7 +53,6 @@ public class UIManager
public void Init()
{
SettingUI = new SettingUI(_main, _mapData);
DebugUI = new DebugUI(_main,_mapData);
GameUI = new GameUI(_main,_mapData);
//这里要异步new和init不然new里会用到还没被new完的自己
GameUI.Init();
@ -72,6 +71,7 @@ public class UIManager
CenterMessageUI = new CenterMessageUI(_main,_mapData);
TechTreeUI = new TechTreeUI(_main,_mapData);
CityUpgradeActionUI = new CityUpgradeActionUI(_main,_mapData);
DebugUI = new DebugUI(_main,_mapData);
}
@ -92,12 +92,13 @@ public class UIManager
TimeEndUI.Update();
MessageUI.Update();
RankingUI.Update();
DebugUI.Update();
}
// ✅ 每帧更新新增的 UI
SettingUI.Update();
GameUI.Update();
DebugUI.Update();
}
public void EndTurn()