My Unityアプリケーションは、時間の経過とともに(オーディオに基づいて)シーンのSkybox Material Exposureプロパティをアニメーション化します。プロジェクトファイルのMaterialアセットにExposure = 1(初期値)が設定されています。これは素晴らしいです。プレイモードを終了しても、スクリプトがSkyboxの素材に変更されないのはなぜですか?
私はユニティ内部アプリプレイするとき:プレイする前に
- を、私は( は何が起こっているか確認するために)プロジェクトに素材を選択し、
- とすぐに
- 、ユニティでPlayアプリアプリが起動すると、マテリアルの露出は、 値(予想通り)、
- に設定されています。Skybox Exposureは期待どおりにアニメートされます(つまり、 は音楽に変わります)。
- 開始時(#3)、再生中(奇数の場合)、
- 再生中にExposure(Inspector)が設定されていると、露出値(Inspector内)はではなくに変更されます。再生中の最後の 値(実行中はインスペクタに表示されません)。
==>終了後、マテリアルがプレプレイの値に戻ることが予想されました。
重要:私は球の半径は(なしのスクリプトが)言って、私は(予想通り)、それはリセットのプレイモードを終了すると、再生しながら、私は手動での球の半径を変更して、この同じ実験をしようとした場合、元の前に再生値。
明らかに、私はUnityに非常にコアなものを紛失しています。私は&がまだ失われているすべてを読んだ。 skybox.material.exposure各フレームを変更する(問題がシーンのスカイボックスまたは類似した何かにデフォルトHideflagsであれば疑問に思う。)
シーンコントローラスクリプト:
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);
}
}
ありがとうございます! skybox.materialが共有参照であったことは、どうしてあなたは知っていましたか?私はUnityのすべてを読んだことがあり、それはどこにも見られませんでした。 –
私はあなたがその文書を読むとは思わない。私が答えた2番目の質問については、** "プレイモードでスカイボックスを変更した場合、DynamicGI.UpdateEnvironment関数呼び出しを使用してアンビエントプローブを更新する必要があります。** [documentation](https: /docs.unity3d.com/ScriptReference/RenderSettings-skybox.html)。 – Programmer
最初の質問とあなたのコメントのために、Unityは 'RenderSettings.skybox' [documentation](https://docs.unity3d.com/ScriptReference/RenderSettings-skybox.html)でこれを言及しませんでした。代わりに' Skybox .material' [documentation](https://docs.unity3d.com/ScriptReference/Skybox-material.html)**は「スカイボックスで使用される素材」 'Renderer.material'とは異なり、これはaを返しますユニークな複製ではなく、共有されたマテリアルの参照です。 – Programmer