zoukankan      html  css  js  c++  java
  • 获取Unity和UGUUI内置组件的属性名

    需求来源

    在阅读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

    // Colors used for a color tint-based transition.
    [FormerlySerializedAs("colors")]
    [SerializeField]
    private ColorBlock m_Colors = ColorBlock.defaultColorBlock;
    public ColorBlock colors            
    { 
    	get { return m_Colors; } 
    	set {if (SetPropertyUtility.SetStruct(ref m_Colors, value))  OnSetProperty(); } 
    }
    
    // Graphic that will be colored.
    [FormerlySerializedAs("highlightGraphic")]
    [FormerlySerializedAs("m_HighlightGraphic")]
    [SerializeField]
    private Graphic m_TargetGraphic;
    public Graphic targetGraphic     
    { 
    	get { return m_TargetGraphic; } 
    	set { if (SetPropertyUtility.SetClass(ref m_TargetGraphic, value))     OnSetProperty(); } 
    }
    
  • 相关阅读:
    DV型、OV型、EV型证书的主要区别
    HTTPS混合内容解析
    Resin 4.0 部署SSL证书
    中间证书的使用
    IBM LOTUS DOMINO 9 部署SSL证书
    F5部署SSL证书
    百度云部署SSL证书
    阿里云部署SSL证书
    加密,解密web.config数据库连接字符串
    不记得oracle管理员密码,更改oracle sys密码的方法
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/14821582.html
Copyright © 2011-2022 走看看