写个脚本,把它挂在一个游戏对象上: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_01 : MonoBehaviour { void Start() { } void Awake() { } void Update() { } void OnDisable() { } void Reset() { } } 此时,脚本前面是有激活对勾的,如图: 把脚本…
今天在优化红点组件,笔者打算将红点id由10进制改为16进制处理,就打算将红点id字段由uint类型改成string类型,用于填写16进制的字符(因为在Inspector面板里,uint/int类型字段不能直接填写16进制表示的数字),且希望限制该字段的输入限制,仅限于填写0-9A-Fa-f等16进制字符串,但unity并没有提供任何PropertyAttribute类来限制字符输入,达到类似于as3 text组件的restrict效果.因此笔者自定义了一个RestrictAttribute类,…
自定义Inspector面板的步骤: Unity内创建自定义的Inspector需要在Asset的任意文件夹下创建一个名字是Editor的文件夹,随后这个文件夹内的cs文件就会被放在vstu生成的Editor程序集里. 自定义Inspector需要创建一个继承自UnityEditor.Editor的类,并且提供一个[CustomEditor(typeof(Behavior))]类特性标记,其中Behaviour就是要自定义观察器的目标组件类型. 然后在Editor派生类里实现OnInspecto…
使用反射功能在Unity运行状态通过Inspector面板修改字段和调用方法 效果展示 一个很简单的组件脚本 运行状态在Inspector面板可以随便修改字段和调用方法 方法调用日志 设计由来 最近在学习反射 结合游戏开发过程遇到比较难受的事情 应用场景 游戏特别庞大.电脑特别垃圾.重新运行一次Unity需要等待几十秒的情况下 你需要修改一个组件字段或者调用一个方法展示一个动画等等 这个时候你肯定渴望可以直接修改字段或者直接调用某个方法 反射就可以实现 修改实例对象所有的字段包括私有字段 调用实…
Serialize功能Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系. 简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能. 换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件. 本文说说可被Serialize的变量的定义方法 1. public 变量在没有加入任何Attribute的前提下,public变量是默认…
今天开始协助主程一起制作新框架.主程让我写关于新版UI框架注册UI预制体用的快捷编辑器. 现学现写,总算完成了. 可以直接把选中的预制体添加到UIController的数组中,期间涉及到改变大小.所以使用了List进行临时转换 其他调整角标越界问题和一些编辑器基础知识就不需要提了,重点记一下在Inspector面板中若编辑内容场景检测不到变化,需要手动做一些无用操作再Ctrl+S才能保存的问题.在百度上查到很多人给的是这个方法: 试验证明在本项目中并没有效果,后来查Google进到Unity官方…
检查方法声明上的注释:如/**xx*/或/*xx*/改为//形式 没有激活的勾: 1.如/**xx*/或/*xx*/改为//形式 2.必须保留Start函数…
原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity-games?playlist=44069 介绍 当我们的游戏运行时,我们设备的中央处理器(CPU)执行指令.游戏的每一帧都需要执行数百万的CPU指令.为了保持平滑的帧率,CPU必须在规定的时间内执行指令.当CPU不能及时执行所有指令时,我们的游戏可能会变慢.卡顿. 许多事情会导致CPU有太多的工作…
环境:Win10 读取text内容后unity报错:Input string was not in the correct format 同时在Inspector面板中无法预览Text文本内容 随后发现只有文本中有中文才会出现这种情况 解决方法就是将Text另存为UTF-8编码格式…
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using UnityEngine; using System.Collections; public class DemoTest : MonoBehaviour { private int _score; public int Score { get { return _score; } set { ) { v…