Unity如何与C#类一起使用

前端之家收集整理的这篇文章主要介绍了Unity如何与C#类一起使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通过研究纯C#,我发现Unity中的脚本(使用C#)有点不直观.

例如,似乎人们(初学者?)在Unity中使用脚本的最常见方式是创建“单一用途”类型脚本并将其附加到实际游戏对象(通过单击并将其拖动到脚本组件).以这种方式,似乎很少用于继承.或许我倒退了.我应该在附加到游戏对象之外创建类/继承,然后只将脚本附加到引用那些外部类的游戏对象吗?我相信你们中的一些人可能只会说“做你想做的事!”或“做什么有效”,但我不想从糟糕的编码方法开始,只是为了最后重构它.

我很困惑的另一件事是Unity中的类实例.无论出于何种原因,似乎我可以使用像Animator这样的内置类而无需实例化它[我几乎从未见过一个=新的Class();然而这些类并不是静态的.这是如何运作的?如果我构建自己的游戏对象引用的类,我是否必须创建与它们一起工作的实例,或者这一切都是由引擎在引擎盖下完成的?

所有这些脚本中的游戏对象(编辑器中的实际项目)在哪里?是否有为每个游戏对象制作的类?如果是这样,我如何找到它并偷看它发生了什么?

解决方法

Unity中的继承与其他框架中的方式完全相关.

考虑你想要实现两种类型的敌人,它们都有一些共同的行为(步行,攻击),并且都有特定的行为(A可以飞行,但B使用寻路攻击).您将设计一个继承自MonoBehavIoUr的抽象Enemy类(btw脚本继承自MonoBehavIoUr,继承自Behavior,..,因此继承就在那里),然后每个继承自Enemy.

这对于维护以及使用你的敌人更好. FlyingEnemy和PathEnemy可以存储在Enemy类型的集合中,允许您迭代它以执行常见的敌人行动(如死亡).

界面也非常有用,因为你可以有一个击中关卡中任何东西的射弹.射弹将检查命中的GameObject是否包含IDamageable组件,如果是,则调用接口的Damage方法.这允许在不知道它是玩家,敌人还是墙壁的情况下击中任何东西.每个都在自己的脚本中实现接口,该方法只执行相关操作.

如果没有这个,你的射弹必须通过一长串检查才能知道它是这个还是那个.

猜你在找的C#相关文章