我正在尝试为游戏生成方程。如何使用带参数的构造函数初始化对象数组?
我创建了一个类等式中每学期:
[System.Serializable]
public class EquationTerm
{
public int Value { get; set; } //random int between 1 and 9
public int Sign { get; set; } //1 for +, 2 for -, 3 for *, 4 for/
public bool IsNextTerm { get; set; }
//default positive equationTerm
public EquationTerm(int value)
{
Value = value;
Sign = 1;
IsNextTerm = false;
}
public EquationTerm(int value, int sign, bool nextTerm)
{
Value = value;
Sign = sign;
IsNextTerm = nextTerm;
}
}
然后,我创建两个数组,以保持等式的左侧和右侧。我想使用一个InitializeArray函数来使用我的构造函数来生成这两个数组,除了我不能使用它们,因为它们都有参数。 有没有办法解决这个问题?
public class EquationGenerator : MonoBehaviour
{
EquationTerm[] LeftTerms;
EquationTerm[] RightTerms;
void Start()
{
//Initialize both side with a random number of terms
LeftTerms = InitializeArray<EquationTerm>(Random.Range (1, 6));
RightTerms = InitializeArray<EquationTerm>(Random.Range (1, 6));
}
EquationTerm[] InitializeArray<EquationTerm>(int length) where EquationTerm : new()
{
EquationTerm[] array = new EquationTerm[length];
array [0] = new EquationTerm (Random.Range (1, 10));
for (int i = 1; i < length; ++i)
{
array[i] = new EquationTerm (Random.Range (1, 10), Random.Range (1, 5), true);
}
return array;
}
我在其他岗位,我可以用Activator.CreateInstance看到,所以我试着写
array[0] = (EquationTerm)Activator.CreateInstance(typeof(EquationTerm), new object[] { EquationTerm (Random.Range (1, 10)) });
,但它告诉我,激活不存在。
请告诉我Random.Range?是否你想创建一个Random类的对象并调用.Next(minvalue,maxvalue)? – singsuyash
此外,为什么它是一个通用的方法,当它所期望的是方程式? – singsuyash
我正在使用Random.Range来获得一个随机的int。例如,InitializeArray(Random.Range(1,6));应该给我一个1到5个EquationTerm对象的数组。我不确定要理解你的第二个问题吗? –
phlipe