Unity中,只要继承MonoBehaviour的脚本都可以任意挂在gameObject上。但是有些脚本可能我并不希望在Editor模式下任意被绑定,或者我只希望某些特定的gameObject才能绑定一些脚本。
编辑模式下添加脚本一共有两种方法,
1、使用鼠标拖拽到某个gameObject上
2、自己做一个MenuItem然后gameObject.AddCompoment<T>上去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { #if UNITY_EDITOR void Reset() { GameObject.DestroyImmediate(this,true); UnityEditor.EditorUtility.DisplayDialog("错误","此脚本不能编辑模式下绑定","ok"); UnityEditor.AssetDatabase.Refresh(); UnityEditor.AssetDatabase.SaveAssets(); } #endif } |
判断条件可以自己加。总之就是不让他在Editor模式下绑定脚本。
- 本文固定链接: https://www.xuanyusong.com/archives/4196
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
我做了点小优化,解决了报错和奔溃问题
#if UNITY_EDITOR
void Reset() {
int tick = 0;
UnityEditor.EditorApplication.CallbackFunction callback = null;
callback = () => {
if(tick > 0) {
UnityEditor.EditorApplication.update -= callback;
DestroyImmediate(this, false);
var msg = GetType().Name + ” : 此脚本不能编辑模式下绑定”;
UnityEditor.EditorUtility.DisplayDialog(“错误”, msg, “ok”);
UnityEditor.AssetDatabase.Refresh();
UnityEditor.AssetDatabase.SaveAssets();
return;
}
tick++;
};
UnityEditor.EditorApplication.update += callback;
}
#endif
5.3.6 OK两次就崩溃
UnityEditor.EditorUtility.DisplayDialog(“错误”,”此脚本不能编辑模式下绑定”,”ok”);这一句到最底下, 但是unity会报一个底层错误。。 不过应该不影响。
能不能加你QQ或者QQ群,谢谢大神
4.6版本确实是会崩溃
点击ok后,unity会崩溃。。。
我这里测试不会崩溃啊, unity5.3.5
限制某些脚本不能随便在Editor模式下绑定容易。有方法让scriptableObject绑定继承GameObject和MonoBeheavior的脚本么?