c# - Unity如何在预制件中关闭所有灯
问题描述
嘿,伙计们,我目前正在制作一个小型手机游戏,跟随 youtube 上的一系列游戏,一切都很顺利,游戏运行良好,一切都很好,但我有一个问题。
所以基本上游戏所做的就是从我的预制件中随机选择一个模型,将其放置在某个位置,然后一遍又一遍地做同样的事情,直到你松手。
但是我刚刚看到,当我(在搅拌机上)创建这个模型时,我在所有这些模型上都创建了一些照明系统。所以现在,当它们被实例化时,场景中有太多的光。我知道我可以在没有灯光的情况下简单地重新导入它们,但问题是我使用搅拌机中的这些模型创建了很多预制件,所以我几乎必须重新开始所有事情。
我想知道是否有一些脚本或方法可以做到这一点,所以当预制件被实例化时,连接到它们的所有灯都被禁用。
我还尝试进入导入模型或制作的第一个预制件的文件夹并取消选中所有灯光(Hemi),但是当实例化 GameObject 时,灯光仍然存在。我认为这是因为我应该在场景中进行更改,然后将其保存回文件夹中,但我又不得不重新做一遍。
这是预制件的制作方式:
导入模型 -> 第一个预制件 -> 片(第二个预制件) -> 段(最后一个预制件)
它是被实例化的片段(因此与所有其他片段一起)。谢谢你的帮助 :)
解决方案
首先为场景中您想要保留的灯光添加一个标签。例如“场景灯”
然后访问场景中所有 Light 类型的游戏对象并将其强度降低到 0,但跳过标签“scene_lights”的那些。
void Start()
{
LightsGO = FindObjectOfType(typeof(Light)) as GameObject[];
foreach(GameObject thisLight in LightsGO)
{
if(thisLight.tag != "scene_lights")
thisLight.light.intensity = 0;
}
}
推荐阅读
- javascript - 背景图像不显示内联反应
- amazon-web-services - 从 SSM 参数生成文件并包含在无服务器框架 lambda 包中
- ios - CollectionView 滚动时跳转
- reactjs - 如何用反应覆盖材质ui网格项目样式
- python - 如何在 pysimplegui 中调整列表框的大小?
- pandas - 具有自定义聚合函数和 dtype 条件的 pandas agg:列静默消失
- php - html表单不显示值
- python - pandas plot with twiny top xticks 锚调整
- python - 在 matplotlib 中的图形 2D 线上绘制 2D 线
- javascript - 在 Web iframe 窗口中访问 TS 命名空间