基本上,我想做的是让一个类根据其自身的值更改许多不同的类。但是,我也想更改已更改的类和正在使用类似变量的类的类。
一个理想的解决方案是称为selectedClass和actingClass的变量。哪里可以说
selectedClass = person1, actingClass = person2
然后做类似
的操作selectedClass.health = selectedClass.health - actingClass.damage
并使其从person1类或person2类中提取或更改值。然后,可以更改person5作为actingClass和person15作为selectedClass的selectedClass和actingClass,并使其获取或设置这些不同的相应值。
我不知道如何为每个可能的人创建一个不同的脚本,而不是为每个其他可能的人创建一个不同的脚本。这将是耗时且不是非常有效的解决方案。
很抱歉,如果我忽略了一个简单的解决方案。预先感谢任何人的帮助!
答案 0 :(得分:7)
您需要的是更多或更少的界面:
public interface IPerson {
int Health {get; set;}
int Damage {get; set;}
}
public class ActionService(){
public IPerson SelectedClass {get;set;}
public IPerson ActingClass {get;set;}
public void Hit()
{
this.SelectedClass.Health -= this.ActingClass.Damage;
}
}
现在您可以这样做:
public class JackieChan : IPerson {
public int Health {get;set;} = 120;
public int Damage {get;set;} = 20;
}
public class Terminator: IPerson {
public int Health {get;set;} = 500;
public int Damage {get;set;} = 25;
}
var action = new ActionService { SelectedClass = new JackieChan(), ActingClass = new Terminator() };
action.Hit();
答案 1 :(得分:3)
首先,我认为您会误认为Class和Object。参见here
因此,在这种情况下,selectedClass
和actingClass
实际上是对对象的引用,而不是对类的引用。您应将其命名为selectedPerson
,actor
。
由于它们是对对象的引用,因此您可以执行以下操作:
var selectedPerson = person1;
var actor = person2;
... change on selectedPerson will affect on person1...
... and you can assign selectedPerson to person 5...