【问题标题】:How can I change the value of 'Draw Halo' inside Point Light - Unity3D如何更改点光源内“绘制光环”的值 - Unity3D
【发布时间】:2017-02-21 11:17:14
【问题描述】:

我似乎无法在智能感知中找到 Draw Halo 属性。有没有办法以编程方式设置其值?谢谢!

【问题讨论】:

    标签: c# unity3d light


    【解决方案1】:

    更新

    public Component AddComponent(string className); 
    

    现在已弃用并删除,因此不能再用于执行此操作。看看我做的扩展方法,叫做AddComponentExt,可以用来做这个here

    答案是使用:gameObject.AddComponentExt("Halo");


    老答案

    即使已经回答了这个问题,我认为其他遇到这个问题的人也会很有用。

    除了rutter's的回答,

    Halo 类不能像其他组件一样直接访问

    GetComponent 函数有两个重载:

    public Component GetComponent(Type type);
    public Component GetComponent(string type);
    

    AddComponent 函数的两个重载:

    public Component AddComponent(Type componentType);
    public Component AddComponent(string className);
    

    您必须将GetComponentAddComponentstring 参数一起使用,而不是与Type 参数一起使用。

    GetComponent("Halo");AddComponent("Halo"); 编译。

    GetComponent<Halo>();AddComponent<Halo>();不会编译。

    此外,您需要通过启用/禁用反射来打开和关闭Halo

    通过反射打开/关闭 Halo 的扩展方法:

    public static class ExtensionMethod
    {
        public static void drawHalo(this Light light, bool value)
        {
            //Get Halo Component
            object halo = light.GetComponent("Halo");
            //Get Enable Halo property
            var haloInfo = halo.GetType().GetProperty("enabled");
            //Enable/Disable Halo
            haloInfo.SetValue(halo, value, null);
        }
    }
    

    用法

    Light light = GameObject.Find("Point light").GetComponent<Light>();
    light.drawHalo(true); //Extension function. pass true or false
    

    注意

    在使用此功能之前,请务必将Halo 附加到Light。 选择你的灯光,然后转到 Component -> Effects -> Halo。您也可以使用 yourLight.AddComponent("Halo"); 从脚本中执行此操作。

    【讨论】:

    • 谢谢!我现在正在使用这个。我几乎放弃了。
    • 很高兴您发现它很有用。
    【解决方案2】:

    Halo 是一个单独的组件。

    为灯光添加光晕:AddComponent&lt;Halo&gt;()

    要访问附加到灯光的光环:GetComponent&lt;Halo&gt;()

    检查器中的“Draw Halo”复选框有点像红鲱鱼 - 它创建了一个 Halo 组件,然后从层次结构视图中隐藏,这是愚蠢的,但它从旧版本的 Unity 中保留。

    【讨论】:

    • 谢谢。这很有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2013-03-25
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多