动态创建的 Tilemap 瓦片在编辑器和 Android 构建中呈现,但不在 WebGL 构建中呈现
Dynamically created Tilemap tiles render in editor and Android build but not in WebGL build
我构建了一个测试项目以获得最小的可重现脚本,并且这样做了:
using UnityEngine;
using UnityEngine.Tilemaps;
public class TileTest : MonoBehaviour {
public Tilemap tilemap;
public Sprite floorSprite;
void Start () {
Tile tile = new Tile();
tile.sprite = floorSprite;
tilemap.SetTile(new Vector3Int(1, 1, 0), tile);
tile = ScriptableObject.CreateInstance<Tile>();
tile.sprite = floorSprite;
tilemap.SetTile(new Vector3Int(-1, -1, 0), tile);
}
}
sprite 只是一个小的 PNG,tilemap 是 Grid(正常)内部的 Tilemap 对象。此脚本附加到网格。这就是这个项目的全部内容。
在编辑器和 Android 构建中,两个实例化都有效。第一个生成警告,这是预期的(已弃用);我只是想直接尝试查看行为是否有所不同,但事实并非如此。
我在 Build Settings 或 PlayerSettings 中找不到任何似乎应该影响它的东西。精灵在网格上的脚本中被引用,为了确保,我将 Sprites 文件夹放在 Resources 文件夹中;没变化。 Firefox 和 Chrome/Chromium(我在 Windows 10 和 Debian 9 中对此进行了测试)都只显示空白 canvas,这是构建(以及更复杂的项目)的正确颜色它还显示我的非瓦片精灵和动画),但没有瓦片精灵渲染。
在实际项目中,我使用在所有平台上都能正常工作的动画动态实例化预制件。为什么它会在 WebGL 中失败?
这是 Unity 引擎的当前错误,将在未来的版本中修复。请密切关注以下内容,以及 Unity 未来的更新日志。
我构建了一个测试项目以获得最小的可重现脚本,并且这样做了:
using UnityEngine;
using UnityEngine.Tilemaps;
public class TileTest : MonoBehaviour {
public Tilemap tilemap;
public Sprite floorSprite;
void Start () {
Tile tile = new Tile();
tile.sprite = floorSprite;
tilemap.SetTile(new Vector3Int(1, 1, 0), tile);
tile = ScriptableObject.CreateInstance<Tile>();
tile.sprite = floorSprite;
tilemap.SetTile(new Vector3Int(-1, -1, 0), tile);
}
}
sprite 只是一个小的 PNG,tilemap 是 Grid(正常)内部的 Tilemap 对象。此脚本附加到网格。这就是这个项目的全部内容。
在编辑器和 Android 构建中,两个实例化都有效。第一个生成警告,这是预期的(已弃用);我只是想直接尝试查看行为是否有所不同,但事实并非如此。
我在 Build Settings 或 PlayerSettings 中找不到任何似乎应该影响它的东西。精灵在网格上的脚本中被引用,为了确保,我将 Sprites 文件夹放在 Resources 文件夹中;没变化。 Firefox 和 Chrome/Chromium(我在 Windows 10 和 Debian 9 中对此进行了测试)都只显示空白 canvas,这是构建(以及更复杂的项目)的正确颜色它还显示我的非瓦片精灵和动画),但没有瓦片精灵渲染。
在实际项目中,我使用在所有平台上都能正常工作的动画动态实例化预制件。为什么它会在 WebGL 中失败?
这是 Unity 引擎的当前错误,将在未来的版本中修复。请密切关注以下内容,以及 Unity 未来的更新日志。