1.为什么在Inspector视图中有的脚本前面有勾选框,有的脚本前面没有? 当我想要禁用一个脚本时,发现脚本前面没有勾选框,有的却有. 解决办法:在脚本中添加start方法,然后就有勾选框了. 原因:不明. 2.禁用脚本后发现脚本中的代码仍然在运行,为什么呢? 类似于OnTriggerEnter()的事件监听方法在脚本被禁用后,仍然会执行. 原因:不明.或许了解下这类方法执行的原理有助于知道为什么. 3.C#属性简写的原理分析: private int fish; public int Fis…
断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html “Unity脚本在层级面板中的执行顺序测试1”中,得到一个结论: 1.非Prefab的GameObject…
测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html Unity脚本在层级面板中的执行顺序测试3 http://www.cnblogs.com/hont/p/5179427.html 1.基本执行顺序 Awake OnEn…
今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void Start() { } 这样就行了,也算是个小技巧吧…
第二篇测试循环时和动态创建时的调用顺序:LINK 测试版本Unity4.6.因为新版本对Transform的排序做了改变,所以不排除旧版本的测试结果不一样.测试时,使用Awake中添加Debug.log(name)来测试顺序 1.不管prefab还是非prefab.执行顺序最高的均是最后创建的.比如先创建GameObject1,后创建GameObject2,后创建GameObject3.执行顺序是 GameObject3 GameObject2 GameObject1 2.通过Resources…
上一篇测试了生成顺序对执行顺序的影响,链接:LINK 执行顺序测试3: LINK 这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序 1.测试消息循环顺序 先上一个最简单的打印测试 测试结果为Awake和OnEnable在第一次循环中,Start在第二次循环中 关于调用时的帧数 第0帧是不做渲染的,第一帧才做渲染,并且Start延后一帧 2.测试动态创建时的顺序 2.1 - Component和GameObject都为打开状态 public TMP template;…
1.function Update () {} 正常更新,用于更新逻辑.此方法每帧都会由系统自动调用一次.2.function LateUpdate () {} 推迟更新,此方法在Update() 方法执行完后调用,同样每一帧都调用.3.function Awake () {} 脚本唤醒,此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次.4.function FixedUpdate () {} 固定更新.固定更新常用于移动模型等操作.5.function Start…
如图: 定义属性描述特性(因为没有描述的数据,让绘制类去绘制所以为空) using UnityEngine; using System.Collections; public class EnumFlagsAttribute : PropertyAttribute {} 自定义属性绘制类: using UnityEngine; using System.Collections; using UnityEditor; [CustomPropertyDrawer(typeof(EnumFlagsAt…
最近在项目中做测试脚本用到一些布尔值做方法的开关,突然想到可以制作一个复选框控制开关. 首先搜集网上的资料,基本大同小异,这里就不多做解释了,代码附上: public class EnumFlagsAttribute : PropertyAttribute{} [CustomPropertyDrawer(typeof(EnumFlagsAttribute))] public class EnumFlagsDrawer:PropetyDrawer { public override void On…
这个问题事实上已经遇到过好几次了.但又没有特别的须要手动勾选,所以也一直都没在意. 今天研究了一下,原来是由于我删除了Start方法...... 所以.仅仅要脚本中没有Start方法,勾选框就会隐藏掉...…
分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在场景视图中设计不同的场景内容时,可以根据需要勾选相关的渲染选项,以便让场景仅显示其中的一部分或者全部渲染效果. 在这些模式中,其中有一套模式能看到全局光照在干什么事.默认情况下,纹理模式是根据 GI 设置来完全照亮场景的. 其他与GI有关的模式还包括:反照率(Albedo).发射光(Emissive). UV 图表(UV Charts). 辐照度(Irradiance). 方向性(Directionality).…
Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程,并行执行脚本的,它是如何执行的呢? 我们做一个小小的实验来验证它.如下图所示,在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,然后按照顺序将脚本绑定在对应的游戏对象身上. 三条脚本的代码完全一样,只是做了一点名称上的区分,代码写的比较丑我们只是作为测试!! using UnityEn…
http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程,并行执行脚本的,它是如何执行的呢? 我们做一个小小的实验来验证它.如下图所示,在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,然后按照顺序将脚本绑定在对应的游戏对象身上. 三条脚本的代码完全一样,只是做了…
本文主要是对unity中如何在Android和iOS中调用Native API进行介绍. 首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调用.利用这一特性,可以扩展unity的功能.例如集成和调用第三方库.同时为了满足对unity接口的一致性,可以考虑在android和iOS上提供相同的接口供C#调用. 这里列举以下两个例子. 1. 1. 以弹出一个覆盖部分屏幕的webview为例来说明如何从C#调用Native接口. 2. 2. 简…
1.Awake Awake用于脚本唤醒.此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次. 2.Start Start方法在Awake之后执行,在脚本生命周期中只执行一次. 由于Awake和Start函数的特性与C#中的构造函数类似(一般情况下,在整个脚本生命周期中只执行一次),所以在Unity中也常用来初始化类的成员变量. 3.FixedUpdate FixedUpdate用于固定频率更新 在Unity中依次单击菜单项Edit→Project Settings→Ti…
渲染 OnPreCull: 在相机剔除场景之前调用此函数.相机可见的对象取决于剔除.OnPreCull 函数调用发生在剔除之前. OnBecameVisible/OnBecameInvisible: 在对象对于相机可见/不可见时调用此函数. OnWillRenderObject: 如果对象可见,则为每个相机调用一次此函数. OnPreRender: 在相机开始渲染场景之前调用此函数. OnRenderObject: 在完成所有常规场景渲染后调用此函数.此时,可使用 GL 类或 Graphics.…
新技术之IL2CPP 最近,我们谈到了Unity 的WebGL . 在那篇文中我们简要谈论到脚本在 WebGL  中的运行的新技术称为"IL2CPP" .然而IL2CPP 所代表的不只是适用于WebGL 的脚本解决方案,同时也是我们自己为了在更多平台上执行 .NET时能有高效能的方案. Unity 中脚本的现状 在深入探究未来之前,让我们先谈谈现在吧. 我们利用Mono (以及在 Windows Store App 和Windows Phone 上的WinRT )让C#变得容易使用,存…
前言 说到生命周期,影响最深刻的是,在接触Java的JSF组件时,JSF组件的五大生命周期,全要默写出来,嘿嘿…… 总结这两天在写小怪和掉落的糖葫芦时,老是遇到GameObject未销毁,一直存在场景中,而导致程序非常卡,有必要详细学习Unity组件的生命周期 在我们现在这个游戏中,是一个无尽模式的跑酷游戏,场景和障碍还有道具都是重复利用地,而其它的我觉得没必要重复利用,在生成之后,当触发器到主角就销毁. 脚本生命周期 查看MonoBehaviour 类中的函数,Awake - > 渲染 OnP…
渲染 OnPreCull: 在相机剔除场景之前调用此函数.相机可见的对象取决于剔除.OnPreCull 函数调用发生在剔除之前. OnBecameVisible/OnBecameInvisible: 在对象对于相机可见/不可见时调用此函数. OnWillRenderObject: 如果对象可见,则为每个相机调用一次此函数. OnPreRender: 在相机开始渲染场景之前调用此函数. OnRenderObject: 在完成所有常规场景渲染后调用此函数.此时,可使用 GL 类或 Graphics.…
作为一个习惯于偷懒的程序,重复性的无聊内容是最让人无奈的事,就比如我们创建Unity脚本之后,需要手动调整生成的新脚本的格式.编码.内容:如果我们要编写的是编辑器或者服务器端脚本,需要修改的内容就会更多等等,因此我们要寻求一种偷懒的解决办法,针对这个问题,之前也使用过一些解决办法,今天就索性总结一下: 1.找到Unity版本对应的安装路径,修改对应的脚本模板: XXX\Editor\Data\Resources\ScriptTemplates\下的模板,直接修改其格式.编码,这样之后在使用时,就…
打印输出: Debug.Log(""); 游戏流程函数: Awake():在对象被创建的时候调用. Start():在Awake()方法之后执行.在脚本禁用后不会执行. update():在游戏循环的每一帧都会调用. FixedUpdate():在每个固定帧率时间后调用.当你处理物理相关(刚体和受力)的时候调用这个函数而不是update(). Destroy():对象摧毁的时候调用. 2D碰撞函数: OnCollsionEnter2D(CollisionInfo2D info):当其他…
unity脚本自带函数执行顺序例如以下:将以下脚本挂在随意物体执行就可以得到 Awake ->OnEable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroy using UnityEngine; using System.Collections; public class timetest : MonoBehavio…
unity引擎把所有脚本先行编译后,在运行的时候一批,一批的函数进行执行. unity脚本自带函数执行顺序如下:将下面脚本挂在任意物体运行即可得到 Awake ->OnEable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy 1.Awake第一个运行,想想我们可以在这个函数里怎样操作? 有一个实例应用.unity单例模式需要在Awake中…
今天开始协助主程一起制作新框架.主程让我写关于新版UI框架注册UI预制体用的快捷编辑器. 现学现写,总算完成了. 可以直接把选中的预制体添加到UIController的数组中,期间涉及到改变大小.所以使用了List进行临时转换 其他调整角标越界问题和一些编辑器基础知识就不需要提了,重点记一下在Inspector面板中若编辑内容场景检测不到变化,需要手动做一些无用操作再Ctrl+S才能保存的问题.在百度上查到很多人给的是这个方法: 试验证明在本项目中并没有效果,后来查Google进到Unity官方…
Unity脚本自动添加注释脚本及头部注释排版格式 公司开发项目,需要声明版权所有,,,,标注公司名,作者,时间,项目名称及描述等等. 自己总结实现的现成脚本及头部注释排版文本,添加到模版即可. 文件不大,用处不小. 链接:http://pan.baidu.com/s/1bOlxtO 密码:rsdi…
Awake ->OnEable-> Start -> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy Awake() 中放Start 函数中的声明部分 OnEnable() 中放Start函数内的协成 1.Awake 用于在游戏开始之前初始化变量或游戏状态.在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如Ga…
Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节点Sprite1下,删除每个复选框节点下的NGUI Snapshot Point 20子节点,调整位置 3.可以更改每个复选框节点下的Label子节点里面的文字 4.这时候两个复选框可以同时被选中,如果想要做只能选中其中一个,就要设置复选框节点下的UI Toggle组件下的Group值,两个节点的Group值…
Awake ->OnEable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroy using UnityEngine; using System.Collections; public class timetest : MonoBehaviour { void LateUpdate() { print("La…
使用反射功能在Unity运行状态通过Inspector面板修改字段和调用方法 效果展示 一个很简单的组件脚本 运行状态在Inspector面板可以随便修改字段和调用方法 方法调用日志 设计由来 最近在学习反射 结合游戏开发过程遇到比较难受的事情 应用场景 游戏特别庞大.电脑特别垃圾.重新运行一次Unity需要等待几十秒的情况下 你需要修改一个组件字段或者调用一个方法展示一个动画等等 这个时候你肯定渴望可以直接修改字段或者直接调用某个方法 反射就可以实现 修改实例对象所有的字段包括私有字段 调用实…
在Unity脚本中常用到的函数就是下面这些,他们的顺序也是按照箭头的方向执行的. Awake ->OnEable-> Start -> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy 1.Awake 用于在游戏开始之前初始化变量或游戏状态.在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.…