🟥 Unity中静态方法的作用:
让你不必再GetComponent<目标脚本>().方法,而是直接 目标脚本.方法,便可直接使用目标脚本的内部方法。
使得写法更加地方便。
🟧 第一种通用写法:
如何使用?
静态脚本放在Assets里,不用挂在场景中。
使用脚本 Test_02 挂在场景中。
🚩 静态脚本:
using UnityEngine; public class Test_01 { public static int[] a=new int[6]; public static void Skode_Debug() { Debug.Log("hello"); } }
🚩 如何使用静态脚本:
using UnityEngine; public class Test_02 : MonoBehaviour { private void Start() { Debug.Log(Test_01.a.Length); Test_01.Skode_Debug(); } }
🟨 第二种拓展写法:
🚩 为什么要用?
- 用了这个SingletonBase写法,就可以让静态脚本中,所有静态方法都不用写static。
- 为了项目中脚本更有逻辑,我们特别将静态方法都摘成各个功能的脚本,这些脚本用这种写法,便可少写代码,且条理。
什么脚本能用? 用来存放,不涉及MonoBehaviour生命周期方法的,只存放静态方法的脚本。
因为继承了SingletonBase,目标脚本便不可继承MonoBehaviour。
目标脚本便不可挂在场景中,不可使用MonoBehaviour生命周期(小声BB)
🚩 怎么用?
1.SingletonBase、静态脚本放在Asset即可,不必挂在场景
2.使用脚本,挂在场景即可。
SingletonBase脚本
public class SingletonBase<T> where T : new() { public static T Single { get; protected set; } = new T(); }
🚩目标脚本:
using UnityEngine; public class Test_01 : SingletonBase<Test_01> { public void Skode_Debug() { Debug.Log("hello"); } }
🚩如何使用目标脚本:
using UnityEngine; public class Test_02 : MonoBehaviour { private void Start() { Debug.Log(Test_01.Single.a.Length); Test_01.Single.Skode_Debug(); } }