[ExecuteInEditMode]】的更多相关文章

using UnityEngine; [ExecuteInEditMode] //添加脚本.启动.Stop的时候执行Awake() Start() public class test : MonoBehaviour { [SerializeField] int val; void Awake() { Debug.Log("Awake()"); } void Start() { Debug.Log("Start()"); } #if UNITY_EDITOR //启动…
ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本.Unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本. 与PlayMode不同的是,函数并不会不停的执行. Update : 只有当场景中的某个物体发生变化时,才调用. OnGUI : 当GameView接收到一个Event时才调用. OnRenderObject 和其他的渲染回调函数 : SceneVidw或者GameView重绘时,调用. Awake与Start调用规则:…
之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体的作用: 可以重复的创建具有相同结构的游戏对象. .1下面来讲解一下如何制作一个简单的预设体(上下为流程和结果图): .2 创建多个prefabs_new(代码,结果图): using UnityEngine; using System.Collections; //[ExecuteInEditMo…
Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [System.Serializable] public class TestClass { public Vector3 vec = Vector3.zero; public Color clr = Color.green; } 也可以使用[System.NonSerialized]标记不需要显示的属性,…
有时候材质做完后需要更改贴图,或者增加贴图,数量少的时候可以一张张添加和修改,数量多的时候就只能代码生成了.原理是通过名字的关联:主贴图和法线贴图大多数只是后缀的不同上,如果不是那是美术规范没做好啊,代码很简单,基本是编辑器类的代码. 这个是还没完善的特定版代码,如直接使用需要更改文件夹名字和贴图后缀. using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor;…
需求 Editor模式下,在运行或者非运行状态下,能够按照指定的变化率来自动改变material中属性数值. 需求分析 如何在Editor模式下获得一个游戏对象及其组件,尤其是在非运行状态下?我们知道在Unity IDE运行起来后是很容易获得一个对象和组件的,在GameObject上挂一个脚本即可.但是在非运行状态下呢,transform.GetComponent这样的方法怎么执行?好在unity已经为我们考虑到了这个问题,提供了[ExecuteInEditMode]Attribute,通过指定…
首先上效果图: 编辑器代码: using UnityEngine; using UnityEditor; using System.Collections; public class LightmapAnalysisEditor : EditorWindow { private static EditorWindow window; [MenuItem("MyEditor/LightmapAnalysis &q")] private static void Execute()…
最近在做UI部分中遇到了这样的问题,就是Prefab里面预制了Prefab.可是在Unity里面一旦Prefab预制了Prefab那么内部的Prefab就失去关联.导致与如果要改内部的Prefab需要把所有引用的地方全部改一遍.今天在逛国外网站看到了一个老外的思路,原文在这里 http://framebunker.com/blog/poor-mans-nested-prefabs/下面直接上代码   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19…
一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能. 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择. 使用编辑器,使得既使不太明白的人,也能快速找到方法.如果是采用手工配置的话,那每一个东西需具备相当完善的文档,文件加载时,得提供高强度的错误效验和错误提示功能. 否则很容易陷入困境. UNITY3D的IDE本身的强大,除了表现在其提供的强大功能外,更让人喜欢的,是它高度的可扩展特性.这也是一个项目开发中,必不可少的环节. 关于…
最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: [ExecuteInEditMode] [MenuItem("Tools/RecordPoint Add Flame")] private static void RecordPointAddFlame() { GameObject twoSphere = AssetDatabase.LoadAssetAtPath(&…