经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
获取Unity和UGUUI内置组件的属性名
来源:cnblogs  作者:赵青青  时间:2021/5/31 8:52:34  对本文有异议

需求来源

在阅读UGUI的源码时,发现Unity对于私有字段才加了[[SerializeField]]标签,而public的没有,且在Editor扩展中,也是查找带序列化标签的私有字段进行修改,那么在开发编辑器插件时,就很有必要知道私有字段名,因为在Inspector中看到是公用字段名(如果切换到中文之后就是汉字),那么怎样获取这个序列化属性的名字呢?

快速获得属性名

对于Unity自带组件的某些属性,如果你不知道属性名称,可以这样做:

  1. 选中组件中所在的GameObject,转到属性面板(Inspect)的组件上,把鼠标移到你要的属性上
  2. 按住Shift+右键 - 选择 打印属性路径(Print Property Path),在Console中就会打印你鼠标所在的属性名

PS. 对于自定义的脚本,如果是属性而不是字段,就是有get和set的,也是可以这样操作的,像这样的[SerializeField] public string LangId;就无法使用。

image-20210528113910950

ugui的源代码示例

如果在编辑器开发要访问Selectable.cs这两个属性是m_Colors和m_TargetGraphic,而Inspector上显示的是colors和targetGraphic

  1. // Colors used for a color tint-based transition.
  2. [FormerlySerializedAs("colors")]
  3. [SerializeField]
  4. private ColorBlock m_Colors = ColorBlock.defaultColorBlock;
  5. public ColorBlock colors
  6. {
  7. get { return m_Colors; }
  8. set {if (SetPropertyUtility.SetStruct(ref m_Colors, value)) OnSetProperty(); }
  9. }
  1. // Graphic that will be colored.
  2. [FormerlySerializedAs("highlightGraphic")]
  3. [FormerlySerializedAs("m_HighlightGraphic")]
  4. [SerializeField]
  5. private Graphic m_TargetGraphic;
  6. public Graphic targetGraphic
  7. {
  8. get { return m_TargetGraphic; }
  9. set { if (SetPropertyUtility.SetClass(ref m_TargetGraphic, value)) OnSetProperty(); }
  10. }

原文链接:http://www.cnblogs.com/zhaoqingqing/p/14821582.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号