zoukankan      html  css  js  c++  java
  • Unity属性(Attributes)

    Unity3d中的属性(Attributes)

    Attributes属性属于U3DRunTimeClass,所以加上以下的命名空间是必须的了。

    using UnityEngine;

    using System.Collections;

     

    0.Property Attributes变量属性(放在方括号内变量申明前)(常用)

     

    1/ Range(min,max)

     

    如: [SerializeField, Range(0, 5)]

          int count;

    如: [SerializeField, Range(0,5)]

         int[] counts;

     

    2/ Multiline 多行

    如: [Multiline]

       public string b;

     

    3/ TextArea 文本区域

     

    可以设置的最大值和最小值的行数

    如: [TextArea]

         public string c;

     

     

     

     

    4/ ContextMenu上下文菜单

    如: [ContextMenu("Hello World!")]

         void HelloWorld()

         {

            Debug.Log("Hello World!");

         }                               

     

    5/ ContextMenuItem(右击变量调用方法)

    如:[ContextMenuItem("Resetvalue","resetValue")]

        public int e=100;

        public void resetValue(){

            e=50;

         }

     

     

     

     

     

     

    6/ Head("This is a variable") 头显示

     

    7/ Space(5)

    设置字段与字段之间的空间

     

    8/ [Tooltip("this is a nasha!")]

    如果鼠标光标是在字段上,显示的说明文本。  

    1.AddComponentMenu 添加组件菜单

    这函数只是起方便用,原本的脚本(组建)都会在“Component/Script”菜单下,在类之前声明一下这个,它便可以出现在"Componet"菜单下的任何位置。说明指的是要重启U3D才能显示,不过测试貌似直接可以显示。

     

    [AddComponentMenu("MyPhysic/PhysicType")]

    public class PhysicType: MonoBehaviour

    {

    }

     

    2.ContextMenu 上下文菜单

    这个译名我觉得很不自然,其实上下文算是啥东西……这个函数是在Inspector的脚本中加一个触发事件,就是删除脚本重置脚本按钮的那个小拉菜单中,具体很难说清位置,所以我截了个图。

    public class Attributes : MonoBehaviour {

        [ContextMenu("Hello World!")]

        void HelloWorld()    

        {

            Debug.Log("Hello World!");

        }   

    }

     

    3.ExecuteInEditMode Editor模式下运行

    跟名字一样,在编辑器中运行。不过有三种函数的调用方式。

    a- "Update()" is only called when something in the scene changed.

    b- "OnGUI()" is called when the Game View recieves an Event.

    c- "OnRenderObject()" and the other rendering callback functions are called on every repaint of the Scene View or Game View.

     

    [ExecuteInEditMode]

    public class ExecuteInEditModeTest: MonoBehaviour

    {

        private Vector3 vec_Rotation = new Vector3(0.0f, 0.5f, 0.0f);

        //Rotate all the time

        void OnRenderObject()

        {

            transform.Rotate(vec_Rotation);

        }

    }

     

    4.HideInInspector 在检视面板中隐藏

    public class HideInspectorTest : MonoBehaviour

    {

        

        [HideInInspector]

        public Transform m_Target;

        void Start()

        {

            m_Target = GameObject.Find("test").transform;

        }

    }

     

    5.RequireComponent 必须要有相应的组建

    加入一个组建之前必须存在另一个相应的组建,若没有则自动创建。这个在项目中非常有必要用到,尤其是项目人员比较多的时候(大于三四个)。

    [RequireComponent (typeof (Rigidbody))]

    public class RequireComponentTest : MonoBehaviour {

        void FixedUpdate()  {

            rigidbody.AddForce(Vector3.up);

        }

    }

     

    6.NonSerialized 不被序列化

    不被序列化该变量,且不显示在检视面板中。

    public class Test {

        [System.NonSerialized]

        public int i_Helloword = 5;

    }

     

    7.Serializable 可序列化

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

    //SerializableTest.cs

    [System.Serializable]

    public class SerializableTest

    {

        public int p = 5;

        public Color c = Color.white;

    }

     

    //SerializableTest2.cs

    public class SerializableTest2 : MonoBehaviour

    {

        public SerializableTest test;

     

    }

     

    8.SerializeField 序列化域(强制序列化)

    这里写得比较清楚,可以将私有变量序列化,将U3D的内建变量序列化等。

     

     

  • 相关阅读:
    Mvc4.0添加商品到Cookie
    个人作业——词频统计
    利用飞信虚拟框架开发绿色.NET程序
    专用服务器和共享服务器的区别(转)
    我做项目对Excel进程处理问题
    通过SQL Server 2000的链接服务器访问Sybase数据库
    结合地理信息系统开发的项目
    模仿Smartphone的开始菜单效果
    如何修改Windows Mobile手机系统颜色
    个人负责的第一个地图应用项目框架截图
  • 原文地址:https://www.cnblogs.com/caymanlu/p/5722581.html
Copyright © 2011-2022 走看看