这是来自瑄的回答:
本质上 原因是 你在这个 C# 脚本中 using 了 UnityEditor 相关的命名空间
你这个 C# 脚本首先会在编辑器下编译,此时编译环境中存在 UnityEditor 相关的程序集和命名空间,因此在编辑的时候不会出问题
然而到了上传的时候,这个脚本会被重新编译到指定目标平台,此时编译环境中不具有 UnityEditor 相关的程序集和命名空间,因此 using 就会找不到对应的命名空间而报错
然后在 Unity 里有个特性,所有父文件夹存在 Editor 的脚本,会仅仅在编辑器下编译,并会在构建产物的时候被排除
因此一个简单的方法是 你只要把这个C#文件放到一个 父目录为 Editor 的地方就可以了
不过你这样单独打包一个 程序集 并指定平台仅限 编辑器 也是一个方法
关于 Unity 的各种特殊文件夹,参考 https://docs.unity3d.com/6000.3/Documentation/Manual/SpecialFolders.html

一种比较典型的文件组织结构是,在一个组件的文件夹中,包含两个存放脚本的文件夹,分别用于 运行时脚本 和 编辑器脚本 。如果需要的话,也可以为两者分别定义程序集。