2d-extras 是 unity 官方为 TileMap 做的一个非常好用的插件,你可以在 GitHub 上下载到它。
你可能跟我一样遇到下载的 2d-extras 包里的 CustomRuleTileMenu 脚本报错的情况。
根据报错提示,是调用了并不存在的函数,经过查找,确实是缺少了相应的函数。
解决方案一:
只需要打开那个脚本,然后把里面的代码替换成以下的代码即可。
1 namespace UnityEditor 2 { 3 static class CustomRuleTileMenu 4 { 5 [MenuItem("Assets/Create/Custom Rule Tile Script", false, 89)] 6 static void CreateCustomRuleTile() 7 { 8 CreateScriptAsset("Assets/Tilemap/Rule Tiles/Scripts/ScriptTemplates/NewCustomRuleTile.cs.txt", "NewCustomRuleTile.cs"); 9 } 10 11 static void CreateScriptAsset(string templatePath, string destName) 12 { 13 typeof(ProjectWindowUtil) 14 .GetMethod("CreateScriptAsset", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic) 15 .Invoke(null, new object[] { templatePath, destName }); 16 } 17 } 18 }
解决方案二:
或者,改用 2d-techdemos 版本,这个是官方提供的,供大家学习的版本,里面除了完整的 2d-extras 外还包括了一些示例,经本人亲测,这个版本没有问题,就是示例素材和palette太多,不需要它们时就会略显碍眼。
事实上,解决方案一中的代码就是这个 2d-techdemos 版本里的 CustomRuleTileMenu 脚本文件的代码。
如果你有兴趣,对比 2d-extras 版本和2d-techdemos 版本 的CustomRuleTileMenu脚本内容,不难看出两者实现的是同样的功能,只是实现方法有些出入而已,我做的也只是相当于替换零件的操作。