using UnityEditor引用注意事项
来源:互联网 发布:折扇起源知乎 编辑:程序博客网 时间:2024/06/05 18:39
本文转载自http://blog.csdn.net/czlilove/article/details/19979725。
在运行时脚本中使用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优先编译。
- using UnityEditor引用注意事项
- using UnityEditor 错误问题
- using UnityEditor; 之后无法Building,会出错
- using使用注意事项
- 【Unity3D游戏开发】`UnityEditor' could not be found Are you missing a using directive ... (二九)
- 引用与using区别
- 引用的注意事项
- 引用jar包注意事项
- 【C++注意事项】3 引用
- webservice引用注意事项
- UnityEditor 热键
- 初涉UnityEditor
- UnityEditor(1)
- 引用与using的区别
- c#委托引用与取消引用注意事项
- php引用(&)详解及注意事项
- php引用(&)详解及注意事项
- php引用(&)详解及注意事项
- loj6014「网络流 24 题」最长 k 可重区间集(费用流)
- WebAssembly已支持所有主流浏览器
- accept函数出现“Invalid Argument”的原因
- 『每周观察』:“在线抓娃娃”开启新娱乐窗口
- AV1:为互联网提供开放、免费的视频编解码工具
- using UnityEditor引用注意事项
- linux中fork()函数详解
- windows 安装 mediawiki
- Promise对象——ECMAScript 6 入门笔记(一)
- springmvc或者springboot整合swagger
- python scrapy cannot import name '_win32stdio'的解决办法
- 2017-12-12
- POJ-1511 Invitation Cards
- Android 动画详解(二)之animation组合使用