过程函数和抽象派生类中的变量
本文关键字:变量 派生 抽象派 函数 抽象 过程 | 更新日期: 2023-09-27 18:19:38
如何避免来自任何派生类的问题并编写两次代码?
我尝试过以下几种:
Type t = GetType(obj);
(obj as t).health
通过这样做,Visual Sudio说health is not member of... blah
这是我的代码:
// gameobjects-class
abstract gameobject
{
Vector2 Position
void update()
etc...
class meteor : gameobject
{
float rotation
etc...
class player : gameobject
{
int health, attackpower
etc...
class enemy: gameobject
{
int health, attackpower
etc...
从GameObject
访问数据的外部类
class anyclass
{
void checkhealth(gameobject obj) // QUESTION:
{
if (obj as player).health = 0 //
kill(obj) //
if (obj as enemy).health = 0 //
kill(obj) //
有什么建议吗?谢谢
您可以为活动对象创建一个接口,然后将其传递给方法
interface ILivingGameObject
{
int Health {get;set;}
}
class Player : GameObject, ILivingGameObject
{
}
void CheckHealth(ILivingGameObject obj)
{
if(obj.Health == 0)
kill(obj);
}
你可以在这里阅读更多界面
或者,你可以创建一个玩家和敌人都继承的LivingObject
类,并将其传递给方法
class LivingObject : GameObject
{
int Health {get;set;}
}
class Player : LivingObject
{
}
void CheckHealth(LivingObject obj)
{
}