Unity3Dは、実行時に標準のシェーダーレンダリングモードを変更します



Unity3d Change Standard Shader Rendering Mode Runtime



https://docs.unity3d.com/Manual/MaterialsAccessingViaScript.html

'私代わりに、Unityは、プロジェクトで使用されているマテリアルアセットを調べることで、使用したバリアントを追跡します。プロジェクトに含めた標準シェーダーのバリアントがどれであっても、それらはビルドに含まれているバリアントです。'




https://forum.unity3d.com/threads/access-rendering-mode-var-on-standard-shader-via-scripting.287002/



#29:

それはうまくいくはずのように私には見えますが、それは私にとっても失敗し、理由はわかりません。回避策として、必要なマテリアルの複製を作成し、エディターでフェードモードに設定してから、非アクティブなGameObjectをシーンの1つに追加し、そのフェードモードマテリアルを使用するようにしました。これにより、適切なシェーダーがビルドに含まれるようになり、実行時に元のマテリアルがフェードモードに切り替わったようです。少し醜いですが、動作します。




新しい標準マテリアルを作成するには、シェーダーがResourcesフォルダーに配置されているstandardshaderのコピーファイルを選択し、レンダリングモードでスタンドアロンのコンパイルとパッケージ化exe操作に必要なレンダリングモードを選択し、使用するシーンにゲームオブジェクトを追加します。この素材。レンダリングモードはスクリプトで変更できます。

または、プロジェクト設定->グラフィックスにデフォルトでデフォルトのシェーダーを追加します

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------

foreach(GameObject go in Gos){
// Transform [] children = go.GetComponentsInChildren()
Renderer []レンダラー= go.GetComponentsInChildren()
foreach(レンダラーでのレンダラーレンダリング){
Material [] Materials = render.materials
foreach(マテリアル内のマテリアルマテリアル){
material.shader = Shader.Find( 'FadeStandard')
if(slider.value> 0){
material.SetOverrideTag( 'RenderType'、 'Transparent')//フェードモード
material.SetInt( '_ SrcBlend'、(int)UnityEngine.Rendering.BlendMode.SrcAlpha)
material.SetInt( '_ DstBlend'、(int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha)
material.SetInt( '_ ZWrite'、0)
material.DisableKeyword( '_ ALPHATEST_ON')
material.EnableKeyword( '_ ALPHABLEND_ON')
material.DisableKeyword( '_ ALPHAPREMULTIPLY_ON')
material.renderQueue =(int)UnityEngine.Rendering.RenderQueue.Transparent
material.SetColor( '_ Color'、new Color(1、1、1、1-slider.value))
} そうしないと {
material.SetOverrideTag( 'RenderType'、 '')//不透明モード
material.SetInt( '_ SrcBlend'、(int)UnityEngine.Rendering.BlendMode.One)
material.SetInt( '_ DstBlend'、(int)UnityEngine.Rendering.BlendMode.Zero)
material.SetInt( '_ ZWrite'、1)
material.DisableKeyword( '_ ALPHATEST_ON')
material.DisableKeyword( '_ ALPHABLEND_ON')
material.DisableKeyword( '_ ALPHAPREMULTIPLY_ON')
material.renderQueue = -1
}
}
}
}