我的 Unity 应用程序会随着时间(基于音频)为场景的 Skybox Material Exposure 属性设置动画。我的项目文件中的 Material 资产具有 Exposure=1(初始值)。这很好用。
当我在 Unity 中播放应用程序时:
- 在播放之前,我在 Project 中选择 Material(看看发生了什么),
- 在 Unity 中播放应用程序,
- 应用程序启动后,材质的曝光设置为非常低的值(如预期的那样),
- Skybox Exposure 的动画效果符合预期(即 Skybox 正在改变音乐),
- 曝光值(在 Inspector 中)在开始时(#3)的第一次更改后没有改变,在播放期间(看起来很奇怪),
- 当我退出播放模式时,曝光(在检查器中)设置为播放期间的最后一个值(运行时检查器中不显示)。
==> 我希望材质在退出后返回到它的播放前值。
重要提示:如果我尝试使用 Sphere 半径(虽然没有脚本)进行相同的实验,并且在播放时手动更改球体的半径,当我退出播放模式时,它会(如预期)重置为其原始的播放前值。
显然,我缺少 Unity 的一些非常核心的东西。我已经阅读了所有我能找到但仍然丢失的东西。(想知道问题是否是场景天空盒上的默认隐藏标志或类似的东西。)
每帧更改 skybox.material.exposure 的场景控制器脚本:
public class AnimateSkyboxFromAudio : BaseAnimateFromAudio {
protected override void Start() {
base.Start ();
}
protected override void MyUpdate () {
float rms = GetAttrByName (AudioAnalyzer.RMS);
RenderSettings.skybox.SetFloat ("_Exposure", rms * 5);
}
}