unity中 类与函数、函数参数之间的花式使用方式(三)枚举篇

前言

在编写代码的时候发现,枚举也可以和函数与类有着重要的联系

当我们想写有一定相同状态下,出现的不同种,多种的情况,来做特定的事时,就可以先用枚举来列出来

如敌人有多种类型的时候,这时可以用到枚举把相应的敌人通过枚举来判断来创建不同类型的敌人
如敌人的类型不同,需要的死亡特效也不同,这时通过枚举给他们加上相应的判断来做不同的死亡特效
如角色不同,但是其在移动的规则都是相同的。
如斗地主游戏的出牌规则类型很多,这时可以用枚举做出相应的规则判断
如飞机有多种子弹发射方式,我们就给子弹的发射种类也用枚举来做

枚举的作用还是挺多的,因此有必要好好研究一下。

方式一:配合公有方法和Switch、if 使用

在公有方法的参数类边上加入枚举类型和枚举形参,在调用时,做一个判断即可,

扩展:将结果以字符串的类型返回,这样枚举就得到了极大的扩展功能

使用方式: 调用这个公有方法,传入一个相同的枚举类型的值(前提是该枚举是公有的),此时返回这个类型的字符串。
接着通过这个字符串来做各种if判断。 (Switch虽然可以判断多种,但是不建议写太多内容,以免使该函数太长变得难以维护)

  public string getTimeOfDay(TimeOfDay time)
    {
        string result = string.Empty;
        switch (time)
        {
            case TimeOfDay.Moning:
                result = "上午";
                break;
            case TimeOfDay.Afternoon:
                result = "下午";
                break;
            case TimeOfDay.Evening:
                result = "晚上";
                break;
            default:
                result = "未知";
                break;
        }
        return result;
    }

方法二:使用字典、散列表

字典散列表都是键值对应,且查找的时间复杂度为o(1),(虽然会消耗空间…但相对不多影响不大)
但还是可以用字典散列表来储存
Dictionnary<枚举类型,字符串> 的类型储存枚举变量和字符串,这样在调用的时候就可以使用枚举来得出,当然了,最重要的还是要设置为公有类型的对象(字段),以便调用。

使用方法:在Awake() Start() 或使用之前先将枚举类型储存到字典、散列表对象(容器)中。
然后用 if()

扩展: 可以通过文本、xml,json来获取内容,然后再解析时使用字典来存储。可以减少一定的代码量
但是感觉挺麻烦绕了几圈。还是使用第一种形式更加方法方法便。

枚举的运用

枚举在类中可以作为构造函数的参数,做方法的参数来使用。
可以配合构造函数重载、函数重载来使用,
如果不想用枚举类(因为值是int类型)做判断,那么也可以将其值做成字符串型(见方法一)来使用,
枚举类的值变相成了字符串类型也就有了可以使用的控制数据的能力,有了很大的发挥空间,此时枚举可以被用的方式就更多了。

扫描二维码关注公众号,回复: 2302748 查看本文章

先写到这里,有更好的想法再更:)

猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/81146197
今日推荐