Unity Editor 基础篇(一):Build-In Attribute

本文参自:http://mp.weixin.qq.com/s/g7nClmQGPwU2o4yyBm6LcQ
本文为本人学习上连接的笔记有改动,请点击以上链接查看原文,尊重楼主知识产权。

关于 Unity 内置属性可以从到官方文档中查询,本篇文章只介绍一些常用的内置属性。
官方文档:https://docs.unity3d.com/ScriptReference/AddComponentMenu.html


##Attributes属性:
属于U3D的RunTimeClass,所以要加上命名空间:
using UnityEngine;
using System.Collections;

1.AddComponentMenu
AddComponentMenu 属性允许将一个脚本添加到 Component 菜单中,然后你便可以通过 Component ->(你设置的名字)为一个选中的游戏对象创建该脚本,如下所示:

[AddComponentMenu("Learning/People")]
public class People : MonoBehaviour {

}

这里写图片描述


2.RequireComponent()
RequireComponent()属性会自动帮你添加你需要的组件,如果已经存在则不再重复添加,且不能移除,如下所示:

[AddComponentMenu("Learning/People")]
[RequireComponent(typeof(Rigidbody))]
public class People : MonoBehaviour {}

这里写图片描述

提示:经过测试,我发现一个问题,如果脚本已经挂在物体身上,然后再修改脚本,为添加 RequireComponent 属性的话,完全不起作用,因此建议大家在用此属性的时候要注意。


3.ContextMenu()、ContextMenuItem()
ContextMenu()属性允许添加一个命令到该组件上,你可以通过右键或者点击设置图标来调用到它(一般用于函数),且是在非运行状态下执行该函数;
ContextMenuItem()属性允许添加一个命令到该变量上,可通过右击变量来调用对应方法
如下所示:

[AddComponentMenu("Learning/People")]
[RequireComponent(typeof(Rigidbody))]
public class People : MonoBehaviour {
    public string name;
    public int age;
    [ContextMenu("OutputInfo")]
    void OutputInfo()
    {
        print(name+"|"+age);
    }
}

这里写图片描述

public class People : MonoBehaviour {
	[ContextMenuItem("右击时显示名", "OutputInfo")]
    public int age;
    public string name="Hia";
    void OutputInfo()
    {
        print(name+"|"+age);
    }
}

这里写图片描述


4.HelpURL()
HelpURL()提供一个自定义的文档链接,点击组件上的文档图标既能打开到你指定的链接,如下所示:

[HelpURL("http://www.baidu.com")]
public class People : MonoBehaviour {
    public string name;
    public int age;
}

这里写图片描述

提示:填写链接时,一定要写上 http:// 或者 https://,否则将无任何反应。


5.InitializeOnLoad 启动事件监听
[InitializeOnLoad] :在启动Unity的时候运行编辑器脚本**


6.Range()、Multiline()、header()
**Range()**属性用于将一个值指定在一定的范围内,并在Inspector面板中为其添加滑块;
**Multiline()**属性用于给 string 类型添加多行输入;
**header()**属性用于添加属性的标题,具体操作如下所示:

public class People : MonoBehaviour {
    [Header("BaseInfo")]
    [Multiline(5)]
    public string name;
    
    [Range(-2,2)]
    public int age;
}

这里写图片描述

简单的分解一下:

1/ 第9行,我们使用了 [Header(“BaseInfo”)] 为其设置了标题(为“BaseInfo”),如上图所示。
2/ 第10行,我们使用了 [Multiline(5)] 为其 name 属性添加了5行输入,如上图所示,明显输入框变大了。
3/ 第12行,我们使用了 [Range(-2,2)] 为其 age 属性指定了一个(-2,2)的范围,并且为其添加了一个滑块,如上图所示。


7.Tooltip()、Space()
Tooptip()属性用于在 Inspector 面板中,当鼠标停留在设置了Tooltip()的属性添加指定的提示;
Space()用于为在 Inspector 面板两属性之间添加指定的距离,如下所示:

public class People : MonoBehaviour {

    [Header("BaseInfo")]
    [Multiline(5)]
    public string name;
    
    [Range(-2, 2)]
    public int age;
    
    [Space(100)]
    [Tooltip("用于设置性别!")]
    public string sex;

这里写图片描述


**8.Serializable、SerializeField **
1/ Serializable这个属性可以让子类(继承类)的变量属性显示在检视面板中,也能序列化它。(JS的话完全不需要这个属性。)

[System.Serializable]
public class Boy
{
    public int stength;
}
public class People : MonoBehaviour {

    public Boy bb;
}

这里写图片描述
不加Serializable的话,bb这个变量看不到:

在这里插入图片描述

2/ SerializeField 序列化域(强制序列化):可以将私有变量序列化,将U3D的内建变量序列化等。

[SerializeField, Range(-2, 2)]
private int age;

当然公有变量也可以在面板隐藏:
[HideInInspector] 面板隐藏
[NonSerialized] 不被序列化(不被序列化且不在面板显示)

Unity可以序列化的类型如下:
这里写图片描述


文末:再次声明请尊重楼主版权:
http://mp.weixin.qq.com/s/g7nClmQGPwU2o4yyBm6LcQ

  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity中,代码是用来实现游戏逻辑和功能的关键部分。Unity支持使用C#或UnityScript(一种基于JavaScript的脚本语言)编写代码。 在Unity中,代码通常被组织在脚本文件中,这些脚本文件可以附加到游戏对象上。当游戏运行时,这些脚本将被执行,并且可以通过调用函数、访问变量等方式来实现游戏的各种功能。 以下是一些常见的Unity代码概念和功能: 1. MonoBehaviour:MonoBehaviour是Unity中所有脚本的基类,它提供了一些常用的函数,如Start()、Update()等。通过继承MonoBehaviour类,可以创建自定义的脚本,并将其附加到游戏对象上。 2. GameObject:GameObject是Unity中的基本对象,它代表了游戏场景中的一个实体。可以通过代码创建、修改和销毁游戏对象,以及访问其属性和组件。 3. 组件(Component):组件是附加到游戏对象上的模块化功能单元。例如,Transform组件用于控制游戏对象的位置、旋转和缩放;Rigidbody组件用于模拟物理行为;MeshRenderer组件用于渲染3D模型等。可以通过代码访问和操作组件。 4. 事件(Event):Unity中的事件系统允许在特定条件下触发代码。例如,当玩家点击按钮时,可以触发一个OnClick事件,然后执行相应的代码逻辑。 5. 协程(Coroutine):协程是一种特殊的函数,可以在一段时间内暂停和恢复执行。协程常用于处理复杂的异步操作,如延迟执行、动画序列等。 6. 资源管理:Unity提供了资源管理系统,可以加载、实例化和销毁各种资源,如模型、纹理、声音等。通过代码可以访问和操作这些资源。 关于Unity代码的更多详细信息和示例,请参考Unity官方文档和教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值