我有一个 Unity Tilemap
,并且其中的 tilemap 中存在一些AnimatedTile
s。
我想以编程方式更改动画图块的最小速度和最大速度的值,m_MinSpeed
并m_MaxSpeed
在程序运行时将这些新值应用于我的图块地图内的所有现有图块。
我尝试过执行以下操作:
//Set the animation speed of My Animated Tile to 1
Resources.Load<AnimatedTile>("My Animated Tile").m_MinSpeed = 1;
Resources.Load<AnimatedTile>("My Animated Tile").m_MaxSpeed = 1;
这在 Unity 编辑器中玩游戏时有效,但在游戏的实际构建中无效,因为资源似乎无法修改。
类似这样的事情似乎也不起作用:
Vector3Int tilePosition = new Vector3Int(0,0,0);
AnimatedTile animatedTile = myGrid.GetTile<AnimatedTile>(tilePosition);
animatedTile.m_MinSpeed = 1;
animatedTile.m_MaxSpeed = 1;
GameSceneObjects.wallGrid.SetTile(tilePosition, animatedTile);
在 Unity 编辑器或构建中似乎没有任何效果。
我该如何修改它,以便它可以在游戏构建中发挥作用,而不仅仅是 Unity 编辑器?
一般来说,这些修改后的值只会被考虑一次
GetTileData
,并在您的特定情况下GetTileAnimationData
被调用。另请参阅 => 的示例,
TileBase.RefreshTile
修改后的图块甚至可能还会影响邻居,因此浏览整个图块地图非常重要。=> 修改图块值后,您应该始终调用
Tilemap.RefreshTile
以应用这些更改。如果你修改了很多图块,那么
Tilemap.RefreshAllTiles
在某些时候进行修改可能会更有效率,但这是需要首先进行分析的事情