工具类的管理

工具类的管理

……

……

在做游戏的时候。

基于面向对象的原则,要尽可能让类的职责单一化。

所以,自然而然的会剥离出来很多的工具类。

这些工具类并不需要挂在需要的游戏物体上,而是等待着其它类来调用。

原本。

我是想着看能不能像工厂模式那样对工具类进行管理的。 

但是在尝试了若干次后,只能无奈放弃了。

工厂模式只适合用来创造物体,不适合用来管理工具类。

工具类的管理_第1张图片

没办法,出于下策,只能弄成这样了。

单独的建了一个文件夹Tools,然后将工具类都放在这里面。

随便打开一个工具类看一下。

工具类的管理_第2张图片

 

可以看到,在这个工具类里面,封装了一个静态方法。

实际上,在每一个工具类里面,我都封装了一个或者多个静态方法,这样很方便在其它类里面进行调用。(不需要创建对象就能直接用类名来调用)

不过。

在我刚开始用静态方法来调用的时候,遇到了一个麻烦。

就是静态类里面,只能使用静态变量。

这里解释一下,为什么这是个麻烦?

在上面的图中,我需要Instantiate生成预制体。

而生成Instantiate需要继承MonoBehaviour,才能使用,这是当然的了。

但问题来了,我想要在unity中把预制体直接拖到变量中来,比如如下图所示。

工具类的管理_第3张图片

 

这时候问题就来了。

static静态的变量是不能被显示在unity中的,因为静态变量是属于类的,所以unity中创建的对象没办法显示。

那么我只能用一个取巧一点的办法了。

如下图所示。

工具类的管理_第4张图片

 

我在代码里,先创建一个public,这样就可以在unity中拖拽给prefab。

然后我还创建了一个静态的s_prefab,在Start里面,把public的拖拽的引用赋值给了静态的s_prefab,如此一来,就可以用拖拽的预制体来实现静态方法了。

而且。

注意从最开始往下数的第三幅图。

我为了能让工具类实现拖拽功能。

所以创建了一个专门用来容纳工具的空物体——工具管理类。

这样一来。

管理工具就比较方便了。

当然,这只是我目前的想法,说不定这个管理方法也存在很多缺陷,但对于我目前做的这个小游戏来说已经足矣。

你可能感兴趣的:(unity知识记录,unity,游戏引擎)