【发布时间】:2017-05-12 16:17:41
【问题描述】:
我目前正在编写一个脚本来控制场景的环境照明。我有一个下拉列表和三个用于不同环境照明的脚本,script1、script2 和 script3。在我的控制脚本中,我写道:
public class ControlScript : MonoBehaviour {
public Dropdown dropdown;
public script1 s1;
public script2 s2;
public script3 s3;
public void change() {
int option = dropdown.value;
disableAll();
switch (option){
case 0:
s1.enabled = true;
break;
case 1:
s2.enabled = true;
break;
case 2:
s3.enabled = true;
break;
}
private void disableAll() {
s1.enabled = false;
s2.enabled = false;
s3.enabled = false;
}
}
然后我将此脚本附加到相机,相应地设置脚本并设置 change() 方法侦听 onValueChanged() 事件。
change() 方法可以正确响应下拉列表,但是脚本 s1/s2/s3 未正确启用,因此无法执行任何功能。我尝试将 s1,s2,s3 附加到相机上,但似乎不起作用。
有没有办法解决这个问题?
-------------------编辑更新-------------- ----------------- 脚本 s1、s2、s3 只是 sudo 代码,用于说明我打算在这个项目中做什么。脚本 s1 是使用球谐函数的环境照明脚本,脚本 s2 使用蒙特卡罗采样,脚本 s3 使用中值切割算法。这三个脚本在连接到相机时单独运行良好,但是当我尝试使用另一个脚本控制它们时,在它们被禁用后,即使将它们设置为启用,脚本仍然无法正常运行。
【问题讨论】:
-
如果没有
script1/2/3 的内容,要知道为什么启用和禁用脚本不能达到预期效果几乎是不可能的。此外,您应该遵循约定并以大写字母开头的所有类名命名,例如Script1并最好将其命名为有意义的名称,例如LightingSetup1 -
@Draco18s 感谢您的建议,但是这里的脚本只是 sudocode 来说明我想要做什么。我将脚本附加到相机对象并尝试使用 gameObject.GetComponent,但脚本仍然无法正常工作