public void SetUp() { m_TempAssetInstantiate = new TempAsset("InstantiateObject.cs", @" using UnityEngine; class InstantiateObject : MonoBehaviour { public GameObject Prefab; public GameObject Instance; void Start() { Instance = Instantiate(Prefab); } } "); m_TempAssetAddComponent = new TempAsset("AddComponentToGameObject.cs", @" using UnityEngine; class AddComponentToGameObject : MonoBehaviour { public GameObject Instance; void Start() { Instance.AddComponent<Rigidbody>(); } } "); }
public static TempAsset Save(UnityEngine.Object asset, string fileName) { var tempAsset = new TempAsset(fileName); AssetDatabase.CreateAsset(asset, tempAsset.relativePath); AssetDatabase.ImportAsset(tempAsset.relativePath, ImportAssetOptions.ForceUpdate); return(tempAsset); }
public void SetUp() { m_MonoBehaviourWithEmptyEventMethod = new TempAsset("MonoBehaviourWithEmptyEventMethod.cs", "using UnityEngine; class MyBaseClass : MonoBehaviour { } class MonoBehaviourWithEmptyEventMethod : MyBaseClass { void Update() { ; } }"); // ';' should introduce a noop m_MonoBehaviourWithEmptyMethod = new TempAsset("MonoBehaviourWithEmptyMethod.cs", "using UnityEngine; class MonoBehaviourWithEmptyMethod : MonoBehaviour{ void NotAnEvent() { } }"); m_NotMonoBehaviourWithEmptyMethod = new TempAsset("NotMonoBehaviourWithEmptyMethod.cs", "class NotMonoBehaviourWithEmptyMethod { void Update() { } }"); }
public void SetUp() { m_MonoBehaviourWithEmptyMagicMethod = new TempAsset("MonoBehaviourWithEmptyMagicMethod.cs", "using UnityEngine; class MyBaseClass : MonoBehaviour { } class MonoBehaviourWithEmptyMagicMethod : MyBaseClass { void Update() { } }"); m_MonoBehaviourWithEmptyMethod = new TempAsset("MonoBehaviourWithEmptyMethod.cs", "using UnityEngine; class MonoBehaviourWithEmptyMethod : MonoBehaviour{ void NotMagicMethod() { } }"); m_NotMonoBehaviourWithEmptyMethod = new TempAsset("NotMonoBehaviourWithEmptyMethod.cs", "class NotMonoBehaviourWithEmptyMethod { void Update() { } }"); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" class MyClass { #if !UNITY_EDITOR asd #endif } "); }
public void SetUp() { m_ScriptWithError = new TempAsset("ScriptWithError.cs", @" class ScriptWithError { #if !UNITY_EDITOR asd #endif } "); }
public void SetUp() { m_ScriptWithWarning = new TempAsset("ScriptWithWarning.cs", @" class ScriptWithWarning { void SomeMethod() { int i = 0; } } "); }
public void SetUp() { m_TempAssetBoxingInt = new TempAsset("BoxingIntTest.cs", "using System; class BoxingIntTest { Object Dummy() { return 666; } }"); m_TempAssetBoxingFloat = new TempAsset("BoxingFloatTest.cs", "using System; class BoxingFloatTest { Object Dummy() { return 666.0f; } }"); m_TempAssetBoxingGenericRefType = new TempAsset("BoxingGenericRefType.cs", "class SomeClass {}; class BoxingGenericRefType<T> where T : SomeClass { T refToGenericType; void Dummy() { if (refToGenericType == null){} } }"); m_TempAssetBoxingGeneric = new TempAsset("BoxingGeneric.cs", "class BoxingGeneric<T> { T refToGenericType; void Dummy() { if (refToGenericType == null){} } }"); }
public void SetUp() { m_TempAssetObjectAllocation = new TempAsset("ObjectAllocation.cs", @" class ObjectAllocation { static ObjectAllocation Dummy() { // explicit object allocation return new ObjectAllocation(); } } "); m_TempAssetArrayAllocation = new TempAsset("ArrayAllocation.cs", @" class ArrayAllocation { int[] array; void Dummy() { // explicit array allocation array = new int[1]; } } "); m_TempAssetMultidimensionalArrayAllocation = new TempAsset("MultidimensionalArrayAllocation.cs", @" class MultidimensionalArrayAllocation { int[,] array; void Dummy() { // explicit array allocation array = new int[1,1]; } } "); m_TempAssetParamsArrayAllocation = new TempAsset("ParamsArrayAllocation.cs", @" class ParamsArrayAllocation { void DummyImpl(params object[] args) { } void Dummy(object C) { // implicit array allocation DummyImpl(null, null); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass { void Dummy() { Debug.Log(Camera.allCameras.Length); } } "); }
public void SetUp() { m_TempAssetStringConcat = new TempAsset("StringConcat.cs", @" class StringConcat { string text = ""This is a test""; string Dummy() { return text + text; } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass : MonoBehaviour { void Update() { Debug.Log(Camera.allCameras.Length); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass { void Dummy() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using System.Linq; using System.Collections.Generic; class MyClass { int Dummy(List<int> list) { return list.Count(); } }" ); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass { void Dummy() { #if UNITY_EDITOR Debug.Log(Camera.main.name); #endif } } "); }
public void SetUp() { m_ShaderResource = new TempAsset("Resources/MyTestShader.shader", @" Shader ""Custom/MyTestShader"" { Properties { _Color (""Color"", Color) = (1,1,1,1) } SubShader { Tags { ""RenderType""=""Opaque"" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; half _Glossiness; half _Metallic; fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; } ENDCG } FallBack ""Diffuse"" } "); }
public void SetUp() { m_TempAsset = new TempAsset("FilterTests.cs", @" using UnityEngine; class WrapperClass { InternalClass impl; void DoSomething() { impl.DoSomething(); } } class InternalClass { public void DoSomething() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); }
public static ProjectIssue[] AnalyzeAndFindAssetIssues(TempAsset tempAsset) { var auditor = new ScriptAuditor(); var config = ScriptableObject.CreateInstance <ProjectAuditorConfig>(); config.AnalyzeInBackground = false; auditor.Initialize(config); var foundIssues = new List <ProjectIssue>(); var completed = false; auditor.Audit(issue => { foundIssues.Add(issue); }, () => { completed = true; }); Assert.True(completed); return(foundIssues.Where(i => i.relativePath.Equals(tempAsset.relativePath)).ToArray()); }
public void SetUp() { m_TempAsset = new TempAsset("FilterTests.cs", @" using UnityEngine; class WrapperClass { InternalClass impl; void DoSomething() { impl.DoSomething(); } } class InternalClass { public void DoSomething() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", "using UnityEngine; class MyClass : MonoBehaviour { void Start() { Debug.Log(Camera.main.name); } }"); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass { void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetDerivedClassMethod = new TempAsset("DerivedClassMethod.cs", @" using UnityEngine; class DerivedClassMethod { bool IsMainCamera(Camera camera) { return camera.tag == ""MainCamera""; } } "); m_TempAssetInPlugin = new TempAsset("Plugins/MyPlugin.cs", @" using UnityEngine; class MyPlugin { void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetInPlayerCode = new TempAsset("IssueInPlayerCode.cs", @" using UnityEngine; class MyClassWithPlayerOnlyCode { void Dummy() { #if !UNITY_EDITOR Debug.Log(Camera.allCameras.Length.ToString()); #endif } } "); m_TempAssetInEditorCode = new TempAsset("IssueInEditorCode.cs", @" using UnityEngine; class MyClassWithEditorOnlyCode { void Dummy() { #if UNITY_EDITOR Debug.Log(Camera.allCameras.Length.ToString()); #endif } } "); m_TempAssetIssueInNestedClass = new TempAsset("IssueInNestedClass.cs", @" using UnityEngine; class MyClassWithNested { class NestedClass { void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } } "); m_TempAssetIssueInGenericClass = new TempAsset("IssueInGenericClass.cs", @" using UnityEngine; class GenericClass<T> { void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetIssueInVirtualMethod = new TempAsset("IssueInVirtualMethod.cs", @" using UnityEngine; abstract class AbstractClass { public virtual void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetIssueInOverrideMethod = new TempAsset("IssueInOverrideMethod.cs", @" using UnityEngine; class BaseClass { public virtual void Dummy() { } } class DerivedClass : BaseClass { public override void Dummy() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetIssueInMonoBehaviour = new TempAsset("IssueInMonoBehaviour.cs", @" using UnityEngine; class MyMonoBehaviour : MonoBehaviour { void Start() { Debug.Log(Camera.allCameras.Length.ToString()); } } "); m_TempAssetIssueInCoroutine = new TempAsset("IssueInCoroutine.cs", @" using UnityEngine; using System.Collections; class MyMonoBehaviourWithCoroutine : MonoBehaviour { void Start() { StartCoroutine(MyCoroutine()); } IEnumerator MyCoroutine() { yield return 1; } } "); m_TempAssetIssueInDelegate = new TempAsset("IssueInDelegate.cs", @" using UnityEngine; using System; class ClassWithDelegate { private Func<int> myFunc; void Dummy() { myFunc = () => { Debug.Log(Camera.allCameras.Length.ToString()); return 0; }; } } "); m_TempAssetAnyApiInNamespace = new TempAsset("AnyApiInNamespace.cs", @" using System.Linq; using System.Collections.Generic; class AnyApiInNamespace { int SumAllValues(List<int> list) { return list.Sum(); } } "); }
public void SetUp() { m_TempAssetObjectAllocation = new TempAsset("ObjectAllocation.cs", @" class ObjectAllocation { static ObjectAllocation Dummy() { // explicit object allocation return new ObjectAllocation(); } } "); m_TempAssetClosureAllocation = new TempAsset("ClosureAllocation.cs", @" using UnityEngine; using System; class ClosureAllocation { void Dummy() { int x = 1; Func<int, int> f = y => y * x; } } "); m_TempAssetArrayAllocation = new TempAsset("ArrayAllocation.cs", @" class ArrayAllocation { int[] array; void Dummy() { // explicit array allocation array = new int[1]; } } "); m_TempAssetMultidimensionalArrayAllocation = new TempAsset("MultidimensionalArrayAllocation.cs", @" class MultidimensionalArrayAllocation { int[,] array; void Dummy() { // explicit array allocation array = new int[1,1]; } } "); m_TempAssetParamsArrayAllocation = new TempAsset("ParamsArrayAllocation.cs", @" class ParamsArrayAllocation { void DummyImpl(params object[] args) { } void Dummy(object C) { // implicit array allocation DummyImpl(null, null); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", @" using UnityEngine; class MyClass { void Dummy() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } "); m_TempAssetInPlugin = new TempAsset("Plugins/MyPlugin.cs", @" using UnityEngine; class MyPlugin { void Dummy() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } "); m_TempAssetInPlayerCode = new TempAsset("IssueInPlayerCode.cs", @" using UnityEngine; class MyClassWithPlayerOnlyCode { void Dummy() { #if !UNITY_EDITOR Debug.Log(Camera.main.name); #endif } } "); m_TempAssetInEditorCode = new TempAsset("IssueInEditorCode.cs", @" using UnityEngine; class MyClassWithEditorOnlyCode { void Dummy() { #if UNITY_EDITOR Debug.Log(Camera.main.name); #endif } } "); m_TempAssetIssueInNestedClass = new TempAsset("IssueInNestedClass.cs", @" using UnityEngine; class MyClassWithNested { class NestedClass { void Dummy() { Debug.Log(Camera.main.name); } } } "); m_TempAssetIssueInGenericClass = new TempAsset("IssueInGenericClass.cs", @" using UnityEngine; class GenericClass<T> { void Dummy() { Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInVirtualMethod = new TempAsset("IssueInVirtualMethod.cs", @" using UnityEngine; abstract class AbstractClass { public virtual void Dummy() { Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInOverrideMethod = new TempAsset("IssueInOverrideMethod.cs", @" using UnityEngine; class BaseClass { public virtual void Dummy() { } } class DerivedClass : BaseClass { public override void Dummy() { Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInMonoBehaviour = new TempAsset("IssueInMonoBehaviour.cs", @" using UnityEngine; class MyMonoBehaviour : MonoBehaviour { void Start() { Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInCoroutine = new TempAsset("IssueInCoroutine.cs", @" using UnityEngine; using System.Collections; class MyMonoBehaviourWithCoroutine : MonoBehaviour { void Start() { StartCoroutine(MyCoroutine()); } IEnumerator MyCoroutine() { yield return 1; } } "); m_TempAssetIssueInDelegate = new TempAsset("IssueInDelegate.cs", @" using UnityEngine; using System; class ClassWithDelegate { private Func<int> myFunc; void Dummy() { myFunc = () => { Debug.Log(Camera.main.name); return 0; }; } } "); }
public void SetUp() { m_TempAssetIssueInSimpleClass = new TempAsset("IssueInSimpleClass.cs", @" using UnityEngine; class IssueInSimpleClass { void Dummy() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInMonoBehaviourUpdate = new TempAsset("IssueInMonoBehaviourUpdate.cs", @" using UnityEngine; class IssueInMonoBehaviourUpdate : MonoBehaviour { void Update() { Debug.Log(Camera.main.name); } } "); m_TempAssetIssueInClassMethodCalledFromMonoBehaviourUpdate = new TempAsset( "IssueInClassMethodCalledFromMonoBehaviourUpdate.cs", @" using UnityEngine; class IssueInClassMethodCalledFromMonoBehaviourUpdate : MonoBehaviour { class NestedClass { public void Dummy() { // Accessing Camera.main property is not recommended and will be reported as a possible performance problem. Debug.Log(Camera.main.name); } } NestedClass m_MyObj; void Update() { m_MyObj.Dummy(); } } "); m_TempAssetIssueInClassInheritedFromMonoBehaviour = new TempAsset( "IssueInClassInheritedFromMonoBehaviour.cs", @" using UnityEngine; class A : MonoBehaviour { } class B : A { void Update() { Debug.Log(Camera.main.name); } } "); m_TempAssetShaderWarmupIssueIsCritical = new TempAsset("ShaderWarmUpIssueIsCritical.cs", @" using UnityEngine; class ShaderWarmUpIssueIsCritical { void Start() { Shader.WarmupAllShaders(); } } "); }
public void SetUp() { m_TempAsset = new TempAsset("MyClass.cs", "using UnityEngine; class MyClass : MonoBehaviour { void Start() { Debug.Log(Camera.allCameras.Length.ToString()); } }"); }
public static ProjectIssue[] AnalyzeAndFindAssetIssues(TempAsset tempAsset, IssueCategory category = IssueCategory.Code) { var foundIssues = Analyze(category); return(foundIssues.Where(i => i.relativePath.Equals(tempAsset.relativePath)).ToArray()); }
public void SetUp() { m_ShaderResource = new TempAsset("Resources/MyTestShader.shader", @" Shader ""Custom/MyTestShader"" { SubShader { Pass { Name ""MyTestShader/Pass"" CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile __ KEYWORD_A KEYWORD_B struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { return tex2D(_MainTex, i.uv); } ENDCG } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile __ KEYWORD_A struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { return tex2D(_MainTex, i.uv); } ENDCG } } }"); m_PlayerLogResource = new TempAsset("player.log", @" 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: MyTestShader/Pass, stage: vertex, keywords <no keywords> 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: MyTestShader/Pass, stage: fragment, keywords <no keywords> 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: MyTestShader/Pass, stage: vertex, keywords KEYWORD_A 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: MyTestShader/Pass, stage: fragment, keywords KEYWORD_A 02-10 17:36:20.945 6554 6816 D Unity : 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: <unnamed>, stage: vertex, keywords KEYWORD_A 02-10 17:36:20.945 6554 6816 D Unity : Compiled shader: Custom/MyTestShader, pass: <unnamed>, stage: fragment, keywords KEYWORD_A "); m_PlayerLogWithNoCompilationResource = new TempAsset("player_with_no_compilation.log", string.Empty); #if UNITY_2019_1_OR_NEWER m_ShaderWithErrorResource = new TempAsset("Resources/ShaderWithError.shader", @" Sader ""Custom/ShaderWithError"" { }"); #endif m_ShaderUsingBuiltInKeywordResource = new TempAsset("Resources/ShaderUsingBuiltInKeyword.shader", @" Shader ""Custom/ShaderUsingBuiltInKeyword"" { Properties { _MainTex (""Texture"", 2D) = ""white"" {} } SubShader { Tags { ""RenderType""=""Opaque"" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_instancing #include ""UnityCG.cginc"" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } fixed4 frag (v2f i) : SV_Target { return tex2D(_MainTex, i.uv); } ENDCG } } } "); m_SurfShaderResource = new TempAsset("Resources/MySurfShader.shader", @" Shader ""Custom/MySurfShader"" { Properties { _Color (""Color"", Color) = (1,1,1,1) } SubShader { Tags { ""RenderType""=""Opaque"" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; half _Glossiness; half _Metallic; fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; } ENDCG } FallBack ""Diffuse"" } "); m_EditorShaderResource = new TempAsset("Editor/MyEditorShader.shader", @" Shader ""Custom/MyEditorShader"" { Properties { _Color (""Color"", Color) = (1,1,1,1) } SubShader { Tags { ""RenderType""=""Opaque"" } LOD 200 CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; half _Glossiness; half _Metallic; fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; } ENDCG } FallBack ""Diffuse"" } "); }
public void SetUp() { m_TempAssetIssueInSimpleClass = new TempAsset("IssueInSimpleClass.cs", @" using UnityEngine; class IssueInSimpleClass { void Dummy() { Debug.Log(Camera.allCameras.Length); } } "); m_TempAssetIssueInMonoBehaviourUpdate = new TempAsset("IssueInMonoBehaviourUpdate.cs", @" using UnityEngine; class IssueInMonoBehaviourUpdate : MonoBehaviour { void Update() { Debug.Log(Camera.allCameras.Length); } } "); m_TempAssetIssueInClassMethodCalledFromMonoBehaviourUpdate = new TempAsset( "IssueInClassMethodCalledFromMonoBehaviourUpdate.cs", @" using UnityEngine; class IssueInClassMethodCalledFromMonoBehaviourUpdate : MonoBehaviour { class NestedClass { public void Dummy() { Debug.Log(Camera.allCameras.Length); } } NestedClass m_MyObj; void Update() { m_MyObj.Dummy(); } } "); m_TempAssetIssueInClassInheritedFromMonoBehaviour = new TempAsset( "IssueInClassInheritedFromMonoBehaviour.cs", @" using UnityEngine; class A : MonoBehaviour { } class B : A { void Update() { Debug.Log(Camera.allCameras.Length); } } "); m_TempAssetShaderWarmupIssueIsCritical = new TempAsset("ShaderWarmUpIssueIsCritical.cs", @" using UnityEngine; class ShaderWarmUpIssueIsCritical { void Start() { Shader.WarmupAllShaders(); } } "); }
public void TearDown() { TempAsset.Cleanup(); }
public void SetUp() { var material = new Material(Shader.Find("UI/Default")); m_TempAsset = TempAsset.Save(material, "Resources/Shiny.mat"); }