工具类的管理
……
……
在做游戏的时候。
基于面向对象的原则,要尽可能让类的职责单一化。
所以,自然而然的会剥离出来很多的工具类。
这些工具类并不需要挂在需要的游戏物体上,而是等待着其它类来调用。
原本。
我是想着看能不能像工厂模式那样对工具类进行管理的。
但是在尝试了若干次后,只能无奈放弃了。
工厂模式只适合用来创造物体,不适合用来管理工具类。
没办法,出于下策,只能弄成这样了。
单独的建了一个文件夹Tools,然后将工具类都放在这里面。
随便打开一个工具类看一下。
可以看到,在这个工具类里面,封装了一个静态方法。
实际上,在每一个工具类里面,我都封装了一个或者多个静态方法,这样很方便在其它类里面进行调用。(不需要创建对象就能直接用类名来调用)
不过。
在我刚开始用静态方法来调用的时候,遇到了一个麻烦。
就是静态类里面,只能使用静态变量。
这里解释一下,为什么这是个麻烦?
在上面的图中,我需要Instantiate生成预制体。
而生成Instantiate需要继承MonoBehaviour,才能使用,这是当然的了。
但问题来了,我想要在unity中把预制体直接拖到变量中来,比如如下图所示。
这时候问题就来了。
static静态的变量是不能被显示在unity中的,因为静态变量是属于类的,所以unity中创建的对象没办法显示。
那么我只能用一个取巧一点的办法了。
如下图所示。
我在代码里,先创建一个public,这样就可以在unity中拖拽给prefab。
然后我还创建了一个静态的s_prefab,在Start里面,把public的拖拽的引用赋值给了静态的s_prefab,如此一来,就可以用拖拽的预制体来实现静态方法了。
而且。
注意从最开始往下数的第三幅图。
我为了能让工具类实现拖拽功能。
所以创建了一个专门用来容纳工具的空物体——工具管理类。
这样一来。
管理工具就比较方便了。
当然,这只是我目前的想法,说不定这个管理方法也存在很多缺陷,但对于我目前做的这个小游戏来说已经足矣。