博客
关于我
Unity Editor 基础篇(一):Build-In Attribute
阅读量:627 次
发布时间:2019-03-12

本文共 1827 字,大约阅读时间需要 6 分钟。

Unity 内置属性笔记

本文为个人学习笔记,基于 AddComponentMenu 属性进行整理和总结。如需查看原文,请访问指定链接。

1. AddComponentMenu 属性

通过使用 융용ENCH 的内置属性 AddComponentMenu,可以将脚本添加到组件菜单中,方便通过Inspector创建组件。

using UnityEngine;using System.Collections;public class People : MonoBehaviour{	[AddComponentMenu("Learning/People")]    public string name;}

该属性适用于右键点击物体后选择添加组件的场景。

2. RequireComponent 属性

RequireComponent 属性用于强制在物体上添加指定组件,若已存在则不重复。注意,在代码修改后需重新添加该属性。

[RequireComponent(typeof(Rigidbody))]public class People : MonoBehaviour{	// 扩展部分...}

注意事项: 在物体已挂载脚本时,建议避免直接修改脚本属性,否则可能导致该属性失效。

3. ContextMenu 和 ContextMenuItem 属性

用于添加右键菜单选项,前者为菜单项设置回调函数,后者为变量设置额外方法。

public class People : MonoBehaviour{	[ContextMenuItem("OutputInfo")]    public void OutputInfo()    {        Debug.Log(name + "|" + age);    }}

另外,ContextMenuItem 也可用于格式化字符串编辑器输出。

4. HelpURL 属性

定义自定义帮助链接,可供在Inspector中点击查阅详细文档。

[HelpURL("http://www.baidu.com")]public class People : MonoBehaviour{	// 扩展部分...}

注意事项: 助手链接需以 http://https:// 开头。

5. 初始化属性

[InitializeOnLoad] 指示脚本在编辑器启动时执行,适用于需在游戏性运行之外初始化逻辑的场合。

模板示例如下:

public class StartUpScript : MonoBehaviour{	[InitializeOnLoad]	private void Awake() {}}

6. 范围控制和多行为组件属性

高级属性如 RangeMultilineHeader 可以提升开发体验。

示例:

[Header("BaseInfo")][Multiline(5)]public string desc = "通过设置这些属性,便可高度定制游戏交互体验;";[Range(-10, 10)]public int level = 0;[Space(50)][Tooltip("性别选择")]public string gender = "未设置";

说明: Header 为属性添加标题支持、Multiline 实现多行输入,Space 控制属性间距。

7. 位工具属性

TooltipSpace 是现代UI开发中常用的细节优化工具。

[Space(50)][Tooltip("性别设置")]public string gender = "未设置";

可用场景: 在Forbidden设想中,专门处理性别和其他用途属性时非常实用。

8. 可序列化属性

控制变量的可序列化和可视化特性。以下是重点学习内容:

[System.Serializable]public class Student{    public string name;    public int age;}public class Teacher : MonoBehaviour{    public Student student;}

注意事项: 需要系统性学习可序列化类型和属性组合使用方法。

通过对这些属性的深入理解,可以显著提升脚本管理效率和可维护性。

希望这份笔记对您的学习有所帮助!如需进一步讨论,请联系作者。

转载地址:http://gqzxz.baihongyu.com/

你可能感兴趣的文章
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
查看>>
no connection could be made because the target machine actively refused it.问题解决
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>
No module named 'crispy_forms'等使用pycharm开发
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>