c# – 如何创建类的(多态)集合/列表/数组,其中每个类可能具有一
如果我想为游戏创建汽车引擎设计,我将执行以下操作:
基类: public class EngineParts { public string name; public int ID; public GameObject Mesh; public Vector3 Position; public Quaternion Rotation; public string Description; public float new_value; // the brand new price of it } 然后我会有从它继承的类: public class Rods : EngineParts { } public class Pistons : EngineParts { public float Size=51; public float Compression=51; } public class Turbo : EngineParts { public float maxboostpressure; public float minboostpressure; public float MaxOperatingRPM; public float MinOperatingRPM; public float AirToEngineRatio; public float wasteGatePressure; } 这里的导入是所有汽车零件共享基类中的一些常见值,这些值是名称,ID,网格,位置,旋转等. 它们还具有其他更适合零件本身的值,例如Turbo具有maxboostpressure,它决定了涡轮增压器可以承受的最大增压压力. 现在在实际游戏中,我需要能够将这些部分用作一个集合 public EngineParts[] Part = new EngineParts[3]; Part[0] = new Rods(); Part[1] = new Pistons(); Part[2] = new Turbo(); 因此,我可以在需要时遍历所有部件,因为它们都是EngineParts类型. 但是当试图为max maxboostpressure分配一个值时,我无法做到这一点. //Note: Part[1] here is pistons Part[1].name = "SportPiston"; // this will work since it is type of EngineParts Part[1].maxboostpressure = 5.0; // this will not work 这是因为它是EngineParts类型 但我可以说: Rods rd = new Rods(); Pistons pt = new Pistons(); Turbo tb = new Turbo(); pt.name = 5; // this will work pt.maxboostpressure = 5; // this will work 现在他们确实从Base类共享相同的DAta,但是我不能将Rods,Pistons,Turbo放在一个集合中来循环或传递它们在一个适用于所有这些的函数中. 所以 我一直在读书 先感谢您 解决方法
试试像这样的演员:
Piston p = Part[1] as Piston; 如果Part [1]不是Piston,p将为null. 然后继续 if(p!=null) doSomethingHere; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- jQuery中ajax - get() 方法实例详解
- 在MFC 窗口中运行 cocos2d-x 3.2 (二) 让其在MFC picture
- SQLite数据库简单使用
- 用React Native编写跨平台APP
- ruby-on-rails – 如何将rails应用程序从2.2.2升级到2.3.11
- 在sqlite3语句中绑定“unsigned long”(uint64)? C
- pyqt+sqlite程序发布后,提示“driver not loaded”
- 在Xcode中构建iOS模拟器时,如何激活死代码剥离?
- WPF基础到企业应用系列7――深入剖析依赖属性(六)
- ios – 音频播放器在后台播放,应该与硬件静音开关一起使用