BITFALL/Assets/Artists/Scripts/HotFix/FixShaderRuntime.cs

40 lines
878 B
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BITKit;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace BITFALL.HotFix
{
public class FixShaderRuntime : MonoBehaviour
{
private void OnEnable()
{
SceneManager.sceneLoaded += Execute;
}
private void OnDisable()
{
SceneManager.sceneLoaded -= Execute;
}
[BIT]
public void Execute()
{
Execute(SceneManager.GetActiveScene(), LoadSceneMode.Single);
}
private void Execute(Scene arg0, LoadSceneMode arg1)
{
foreach (var x in SceneManager.GetSceneByName(arg0.name).GetRootGameObjects().SelectMany(o=>o.GetComponentsInChildren<Renderer>()) )
{
var materials = x.materials;
foreach (var material in materials)
{
material.shader = Shader.Find(material.shader.name);
}
x.materials = materials;
}
}
}
}