问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Unity 脚本的变量在Inspector面板中如何添加注释,就是鼠标移到一个变量上边时显示提示信息?

发布网友 发布时间:2022-04-15 00:38

我来回答

2个回答

懂视网 时间:2022-04-15 04:59

你只需要在字段上添加特效即可 [Header( " 注释 " )][Space( 20 )] public Vector3 test1; ===================================================================================== 自己抽时间写了一个中文显示小脚本.下次问问老大能不能加到项目中去 usin

你只需要在字段上添加特效即可


[Header("注释")]
[Space(20)]
public Vector3 test1;

=====================================================================================

自己抽时间写了一个中文显示小脚本.下次问问老大能不能加到项目中去

using UnityEngine;
using System.Collections;
using UnityEditor;
using System;
using System.Reflection;
using System.Collections.Generic;

[CustomEditor(typeof(MyCompoment))]
public class MyCompomentEditor : Editor{
 public MyCompomentEditor():base()
 {
 //Debug.Log("我初始化了");
 }


 private static bool isDevelop = true;

 public override void OnInspectorGUI()
 {
 if (isDevelop)
 {
  MyCompoment edit = (MyCompoment)target;
  Type t = edit.GetType();
  string label = string.Empty;
  FieldInfo[] fieldInfs = t.GetFields();
  System.Object[] atrrs = null;
  for (int i = 0; i < fieldInfs.Length; i++)
  {
  atrrs = fieldInfs[i].GetCustomAttributes(false);
  for (int k = 0; k < fieldInfs[i].GetCustomAttributes(false).Length; k++)
  {
   if (atrrs[k] is LabelAttribute)
   {

   label = ((LabelAttribute)atrrs[k]).Label;
   switch (fieldInfs[i].FieldType.Name)
   {
    case "String":
    fieldInfs[i].SetValue(edit, EditorGUILayout.TextField(label, fieldInfs[i].GetValue(edit).ToString()));
    break;
    case "Float":
    fieldInfs[i].SetValue(edit, EditorGUILayout.FloatField(label, (float)fieldInfs[i].GetValue(edit)));
    break;
    //case "Double":
    // fieldInfs[i].SetValue(edit, EditorGUILayout.Doube(label, (double)fieldInfs[i].GetValue(edit)));
    // break;
    case "Int":
    fieldInfs[i].SetValue(edit, EditorGUILayout.IntField(label, (int)fieldInfs[i].GetValue(edit)));
    break;
    case "Int32":
    fieldInfs[i].SetValue(edit, EditorGUILayout.IntField(label, (int)fieldInfs[i].GetValue(edit)));
    break;
    case "Color":
    fieldInfs[i].SetValue(edit, EditorGUILayout.ColorField(label, (UnityEngine.Color)fieldInfs[i].GetValue(edit)));
    break;
    case "GameObject":
    fieldInfs[i].SetValue(edit, EditorGUILayout.ObjectField(label, (UnityEngine.Object)fieldInfs[i].GetValue(edit), typeof(GameObject)));
    break;
    case "Component":
    Debug.Log("运行过Component");
    fieldInfs[i].SetValue(edit, EditorGUILayout.ObjectField(label, (UnityEngine.Object)fieldInfs[i].GetValue(edit), typeof(Component)));
    break;
    case "Vector2":
    fieldInfs[i].SetValue(edit, EditorGUILayout.Vector2Field(label, (Vector2)fieldInfs[i].GetValue(edit)));
    break;
    case "Vector3":
    fieldInfs[i].SetValue(edit, EditorGUILayout.Vector3Field(label, (Vector3)fieldInfs[i].GetValue(edit)));
    break;
    case "Vector4":
    fieldInfs[i].SetValue(edit, EditorGUILayout.Vector4Field(label, (Vector4)fieldInfs[i].GetValue(edit)));
    break;
    //case "Test":
    // Debug.Log("运行过Component");
    // fieldInfs[i].SetValue(edit, EditorGUILayout.ObjectField(label, (UnityEngine.Object)fieldInfs[i].GetValue(edit), typeof(Component)));
    // break;
    default:

    //Debug.Log("fieldInfs[i].Name " + fieldInfs[i].FieldType.BaseType.Name);
    if (fieldInfs[i].FieldType.BaseType.Name == "MonoBehaviour")
    {
     fieldInfs[i].SetValue(edit, EditorGUILayout.ObjectField(label, (UnityEngine.Object)fieldInfs[i].GetValue(edit), fieldInfs[i].FieldType));

    }
    
    break;
   }
   }
  }
  }

 }
 else
 {
  base.OnInspectorGUI();
 } 
 }


 #region 暂时没有用到的代码


 /*
 /// 
 /// 缓存实例的属性,下次就不需要使用循环了
 /// 
 public Dictionary dir;

 public void GetProrptes() 
 {
 if (isDevelop)
 {
  MyCompoment edit = (MyCompoment)target;
  Type t = edit.GetType();
  string label = string.Empty;

  FieldInfo[] fieldInfos = t.GetFields();
  System.Object[] atrrs = null;
  GUIContent contextUI = null;

  for (int i = 0; i < fieldInfos.Length; i++)
  {
  atrrs = fieldInfos[i].GetCustomAttributes(false);
  for (int k = 0; k < atrrs.Length; k++)
  {
   if (atrrs[k] is LabelAttribute)
   {
   label = ((LabelAttribute)atrrs[k]).Label;
   contextUI = new GUIContent();
   contextUI.text = label;
   EditorGUILayout.PropertyField(serializedObject.FindProperty(fieldInfos[i].Name), contextUI);
   }
  }
  }
 }
 else
 {
  base.OnInspectorGUI();
 }
 }
 */
 #endregion
}

MyCompoment:

using UnityEngine;
using System.Collections;

[SerializeField]
public class MyCompoment : MonoBehaviour {

 [LabelAttribute(Label = "名字")]
 public string MyName = "123";

 [LabelAttribute(Label = "float数字")]
 public float float1 = 100;

 [LabelAttribute(Label = "double数字")]
 public double double1 = 100;

 [LabelAttribute(Label = "int数字")]
 public int int1 = 100;

 [LabelAttribute(Label = "颜色")]
 public Color color1 = Color.red;

 [LabelAttribute(Label = "游戏物体")]
 public GameObject GameObject1;

 [LabelAttribute(Label = "组件")]
 public StartPanel Component1;

 [LabelAttribute(Label = "2D")]
 public Vector2 Vector2;

 [LabelAttribute(Label = "3D")]
 public Vector3 Vector3;

 [LabelAttribute(Label = "4D")]
 public Vector4 Vector4;

}

LabelAttribute特性:

using UnityEngine;
using System.Collections;
using System;

public class LabelAttribute : Attribute {
 public string Label;

}

源代码: http://yunpan.cn/cJhp4tThyGauJ 访问密码 5789

热心网友 时间:2022-04-15 02:07

[Tooltip("12313")]

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
昨晚洗碗的时候突然腰痛,站都站不稳,直着躺不下去要侧着慢慢躺下,挺直... 微粒贷能够强行开通吗? 房地产经营与估价和工程造价哪个更好? ...的土地估价师,房地产估价师,资产评估师,造价师的月薪范围大概是多少... 造价师和房地产估价师,哪个更值得考 qq空间怎么重开 国美电器神州优雅A560P-i7 D1样机价4399元,值得购买吗? 5元钱每平方的足球场草坪能否踢世界杯 世界杯草坪多少钱一平方 战战合击多少级练拜托各位大神 抖音离线好友是怎么排序的 美国进口的紫外(UV)透射台哪里可以维修?实验室的一台这个设备坏了,新买一个的话多少钱? 美国UV能量计哪家好,美国EIT UV能量计 ussa 是指什么? 美国Fusion UV固化效果怎么样? 美国的uv涂料的节日是什么时候 图书封面设计中uv是什么意思 要形象直白一点的 如何在平板电脑的桌面创建文件夹? 台电平板电脑怎么创建文件夹 事故车是不是不能上路啊? 二手车,底大边(门槛边梁)做过钣金的车属于事故车?对安全影响大不大... 事故车当精品车卖犯法吗 交通事故鉴定人同时在事故车修理厂兼职合法吗? 事故车国家认定标准 事故车修完复勘合法吗? 有这样一个亲哥哥,他的生意被堂弟挖走了一半多,我是微信家族群主,哥哥让我把堂弟踢出去, 21岁男子仅仅因微信被封而选择自杀,他值得吗? 跟男朋友谈了3年了,现在是异地,他有个弟弟好吃懒做的,一天就知道玩也不怎么上班? 为什么我对自己的亲弟弟毫无感情? 尹子维的简介? 屏声息气的意思 屏声息气的成语解释及意思 屏气息声的意思是什么 屏声息气的意思是什么 描写神态的成语和它的意思 屏障的屏的另一个读音是什么,可以组成一个什么成语 描写人物神态的成语 要解释 在线 四个 形容人物神态表情的成语 求20个写人物神态的成语意思+造句 重金!!! 我写一篇竞选班长英语作文20字,快点,谢谢 竞选班长的英语作文50字 含“声”与“息”的成语 什么声什么气的所有成语 屏声息气胸有成竹鸡飞狗跳这三个成语的意思 英语作文张明竞选班长 求竞选班长的英语作文 成语解释--多少也行--我会常来看的. 英语课代表竞选稿、要英文的!还要有中文翻译、 神态的成语 谁帮我写一篇英语作文,竞选班长的演讲 不用太难!谢谢