如何更改 Point Light 中 'Draw Halo' 的值 - Unity3D
How can I change the value of 'Draw Halo' inside Point Light - Unity3D
我似乎在智能感知中找不到 Draw Halo 属性。有没有办法以编程方式设置它的值?谢谢!
Halo
是一个单独的组件。
给灯光添加光晕:AddComponent<Halo>()
要访问附加到灯的光环:GetComponent<Halo>()
检查器中的 "Draw Halo" 复选框有点转移注意力——它创建了一个 Halo
组件,然后从层次结构视图中隐藏该组件,该视图是愚蠢的,但它从旧版本中保留下来Unity 版本。
更新:
public Component AddComponent(string className);
现已弃用并删除,因此不能再用于执行此操作。看看我做的扩展方法,叫做 AddComponentExt
可以用来做这个 .
答案是使用:gameObject.AddComponentExt("Halo");
旧答案:
即使已经回答了这个问题,我认为其他 运行 参与其中的人也会很有用。
除了回答,
Halo
class不能像其他组件一样直接访问.
GetComponent
函数有两个重载:
public Component GetComponent(Type type);
public Component GetComponent(string type);
AddComponent
函数的两个重载:
public Component AddComponent(Type componentType);
public Component AddComponent(string className);
您必须使用带有 string
参数的 GetComponent
和 AddComponent
而不是带有 Type
参数的那个。
GetComponent("Halo");
和 AddComponent("Halo");
将 编译。
GetComponent<Halo>();
和 AddComponent<Halo>();
将 不 编译。
此外,您需要使用反射来通过 enabling/disabling 打开和关闭 Halo
。
通过反射切换 Halo on/off 的扩展方法:
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
。
Select 你的灯,然后转到 Component -> Effects -> Halo。您也可以使用 yourLight.AddComponent("Halo");
.
从脚本中执行此操作
我似乎在智能感知中找不到 Draw Halo 属性。有没有办法以编程方式设置它的值?谢谢!
Halo
是一个单独的组件。
给灯光添加光晕:AddComponent<Halo>()
要访问附加到灯的光环:GetComponent<Halo>()
检查器中的 "Draw Halo" 复选框有点转移注意力——它创建了一个 Halo
组件,然后从层次结构视图中隐藏该组件,该视图是愚蠢的,但它从旧版本中保留下来Unity 版本。
更新:
public Component AddComponent(string className);
现已弃用并删除,因此不能再用于执行此操作。看看我做的扩展方法,叫做 AddComponentExt
可以用来做这个
答案是使用:gameObject.AddComponentExt("Halo");
旧答案:
即使已经回答了这个问题,我认为其他 运行 参与其中的人也会很有用。
除了
Halo
class不能像其他组件一样直接访问.
GetComponent
函数有两个重载:
public Component GetComponent(Type type);
public Component GetComponent(string type);
AddComponent
函数的两个重载:
public Component AddComponent(Type componentType);
public Component AddComponent(string className);
您必须使用带有 string
参数的 GetComponent
和 AddComponent
而不是带有 Type
参数的那个。
GetComponent("Halo");
和 AddComponent("Halo");
将 编译。
GetComponent<Halo>();
和 AddComponent<Halo>();
将 不 编译。
此外,您需要使用反射来通过 enabling/disabling 打开和关闭 Halo
。
通过反射切换 Halo on/off 的扩展方法:
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
。
Select 你的灯,然后转到 Component -> Effects -> Halo。您也可以使用 yourLight.AddComponent("Halo");
.