Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改点光源内部“绘制光晕”的值-Unity3D_C#_Unity3d_Light - Fatal编程技术网

C# 如何更改点光源内部“绘制光晕”的值-Unity3D

C# 如何更改点光源内部“绘制光晕”的值-Unity3D,c#,unity3d,light,C#,Unity3d,Light,我似乎找不到智能意义上的Draw Halo属性。有没有办法以编程方式设置其值?谢谢 光环是一个单独的组件 向灯光添加光晕的步骤:AddComponent 访问附着到灯光的光晕的步骤:GetComponent inspector中的Draw Halo复选框有点模糊-它创建了一个Halo组件,然后该组件从层次视图中隐藏,层次视图是带骨头的,但从Unity的旧版本中保留下来。更新: 现已弃用并删除,因此无法再使用它来执行此操作。看一看我做的扩展方法,名为addComponentText,可以用来实现这

我似乎找不到智能意义上的Draw Halo属性。有没有办法以编程方式设置其值?谢谢

光环是一个单独的组件

向灯光添加光晕的步骤:AddComponent

访问附着到灯光的光晕的步骤:GetComponent

inspector中的Draw Halo复选框有点模糊-它创建了一个Halo组件,然后该组件从层次视图中隐藏,层次视图是带骨头的,但从Unity的旧版本中保留下来。

更新:

现已弃用并删除,因此无法再使用它来执行此操作。看一看我做的扩展方法,名为addComponentText,可以用来实现这一点

答案是使用:gameObject.AddComponentExtHalo

旧答案:

尽管这个问题已经得到了回答,但我认为其他遇到这个问题的人会很有用

除了回答,

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

GetComponent函数有两个重载:

public Component GetComponent(Type type);
public Component GetComponent(string type);
public Component AddComponent(Type componentType);
public Component AddComponent(string className);
AddComponent函数有两个重载:

public Component GetComponent(Type type);
public Component GetComponent(string type);
public Component AddComponent(Type componentType);
public Component AddComponent(string className);
必须将GetComponent和AddComponent与string参数一起使用,而不是与Type参数一起使用

GetComponentHalo;添加成分晕;将编译

GetComponent;和添加组件;不会编译

此外,还需要使用反射通过启用/禁用光晕来打开和关闭光晕

使用反射打开/关闭光晕的扩展方法:

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);
    }
}
用法:

注:

使用此功能前,请确保将光晕附加到灯光上。
选择灯光,然后转到组件->效果->光晕。您还可以使用yourLight.AddComponentHalo;从脚本执行此操作

谢谢。这很有帮助:谢谢!我现在用这个。我差点就放弃了。很高兴你发现它很有用。