我正在嘗試爲遊戲生成方程。如何使用帶參數的構造函數初始化對象數組?
我創建了一個類等式中每學期:
[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