• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

在运转时脚本中运用UnityEditor命名空间

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0328/428.html

 

在运转时脚本中运用UnityEditor命名空间
 
 
常州网站开发培训运转时脚本中运用UnityEditor命名空间,假设该脚本被挂在场景中的物体上,那么:
 
能够这样做,在Unity编辑器中运转时也会正常运转,不会报错。但是当我们打包时会呈现以下错误(不论该脚本有没有被挂在任何一个物体上,只需不是在Editor文件夹下,都会报错):
The type or namespace name`UnityEditor' could not be found. Areyoumissing a using directiveor an assembly reference?
 
为什么会这样呢?
 
由于Unity在发布游戏的时分不会运用UnityEditor命名空间的程序集UnityEditor.dll,自然就不能辨认UnityEditor命名空间了。
 
所以说,UnityEditor命名空间及其中的编辑器类只能在编辑器中运用。
 
但上面的问题该如何处理呢?
 
准绳上来说,运转时脚本和编辑器脚本应该分开放,编辑器脚本都放在“Editor”文件夹下面,这样打包时自然不会报错。
 
但我如今又希望在运转时脚本中运用UnityEditor,那么能够运用条件编译
 
对运用UnityEditor命名空间的语句或声明运用
#if UNITY_EDITOR
……
#endif
 
这样UnityEditor命名空间及其类就只能在Unity编辑器环境下起作用了
 
Unity中各文件夹的编译次第(转载)
 
关于常州企业培训每一种脚本言语,依据脚本放置的位置(其实也局部依据了脚本的作用,比方编辑器扩展脚本,就必需放在Editor文件夹下),Unity3D会生成4种后缀的工程。其中的firstPass就表示先编译,Editor表示放在Editor文件夹下的脚本。
 
下面以C#脚本为例。假如工程中只要C#脚本,不思索为VS和MonoDevelop各自生成工程的差别性,我们能够得到4个工程文件:
Assembly-CSharp-firstpass-vs.csproj
Assembly-CSharp-Editor-firstpass-vs.csproj
Assembly-CSharp-vs.csproj
Assembly-CSharp-Editor-vs.csproj
 
(1) 一切在Standard Assets,Pro Standard Assets或者 Plugins文件夹中的脚本会产生一个Assembly-CSharp-firstpass-vs.csproj文件,并且先编译;
 
(2) 一切在Standard Assets/Editor, Pro Standard Assets/Editor 或这Plugins/Editor文件夹中的脚本产生Assembly-CSharp-Editor-firstpass-vs.csproj工程,接着编译;
 
(3) 一切在Assets/Editor外面的, 并且不在(1),(2)中的脚本文件(普通这些脚本就是我们本人写的非编辑器扩展的脚本)会产生Assembly-CSharp-vs.csproj工程,被编译;
 
(4) 所以在Assets/Editor中的脚本产生一个Assembly-CSharp-Editor-vs.csproj工程,被编译。
 
常州软件技术培训之一切这样树立工程并按此次第编译,也是由于DLL间存在的依赖关系所决议的。
 
另外,我们在IDE中也能够看到对应称号的assembly,也就是dll
 
总结来说就是,特殊文件夹(Standard Assets。)比普通文件夹优先编译(firstpass),run-time script比editor script优先编译。

上篇:上一篇:常州手游开发-UGUI做小地图
下篇:下一篇:常州手游开发-Unity截屏