我通过创建一个简单的程序来练习C#,只要我在Unity中单击,就会在控制台中输出一些消息。
主题是滚动。单击时,它将使用Random.Range();模拟滚动。如果滚动6,它会向控制台输出一条消息,否则它只会告诉您通过控制台的结果。
我收到错误代码CS0019。
我的代码:
void Start () {
rollingDice ();
}
//This Function handles the rolling of the die. When called, it will generate a random number from; Random.Range between the number of 1 to 6, just like a die.
int rollingDice ()
{
int Dice = Random.Range (0,6);
return Dice;
}
//This Function executes the Function rollingDice (); upon click
void OnMouseDown()
{
rollingDice ();
}
// Update is called once per frame
void Update ()
{
if (rollingDice == 6) { //I've put the if statements here in update to check whether I've
//rolled a 6 or not every frame.
Debug.Log ("You've hit the highest number!!");
} else {
Debug.Log ("Your last roll was: " + rollingDice);
}
}
答案 0 :(得分:2)
正如 Pikoh的 answer中所述,您需要在函数名称前面添加()
来调用它。
这只能解决您的编译问题。有许多未讨论的问题我决定留下这个答案。
1 。每次if (rollingDice() == 6)
,您都会收到一个新的随机数。当您执行Debug.Log ("Your last roll was: " + rollingDice());
时,您将获得另一个新的随机数。
来自if (rollingDice() == 6)
,OnMouseDown()
函数和Debug.Log("Your last roll was: " + rollingDice());
的随机数不会相同。
2 .Unity' Random.Range
第二个参数是独占的,这意味着Unity不包含它。它包括max-1。
如果要在0
和6
之间生成随机数,则必须将7
传递给第二个参数。那应该是Random.Range(0, 7)
。
使用您当前的代码,if (rolledDice == 6)
永远不会成真。
此外,骰子数量介于1
和6
之间 0
和6
之间,因此应使用Random.Range(1, 7)
。< / p>
您必须先调用rollingDice()
,然后将其存储在临时变量中并重复使用。
int rolledDice = -1;
void Start()
{
rolledDice = rollingDice();
}
//This Function handles the rolling of the die. When called, it will generate a random number from; Random.Range between the number of 1 to 6, just like a die.
int rollingDice()
{
int Dice = UnityEngine.Random.Range(1, 7);
return Dice;
}
//This Function executes the Function rollingDice (); upon click
void OnMouseDown()
{
rolledDice = rollingDice();
}
// Update is called once per frame
void Update()
{
if (rolledDice == 6)
{ //I've put the if statements here in update to check whether I've
//rolled a 6 or not every frame.
Debug.Log("You've hit the highest number!!");
}
else
{
Debug.Log("Your last roll was: " + rolledDice);
}
}
最后,请注意OnMouseDown()
用于检测对象上的鼠标单击。你没有提到这一点。你只是说你想在点击鼠标时生成随机数,而不是在游戏对象上点击鼠标时。 Input.GetMouseButtonDown
函数用于检测鼠标单击,因此您的实际代码应如下所示:
int rolledDice = -1;
void Start()
{
rolledDice = rollingDice();
}
//This Function handles the rolling of the die. When called, it will generate a random number from; Random.Range between the number of 1 to 6, just like a die.
int rollingDice()
{
int Dice = UnityEngine.Random.Range(1, 7);
return Dice;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
rolledDice = rollingDice();
if (rolledDice == 6)
{ //I've put the if statements here in update to check whether I've
//rolled a 6 or not every frame.
Debug.Log("You've hit the highest number!!");
}
else
{
Debug.Log("Your last roll was: " + rolledDice);
}
}
}
答案 1 :(得分:1)
调用方法时,需要在名称后添加parethesis。所以:
if (rollingDice == 6)
应该是:
if (rollingDice() == 6)
并且
Debug.Log ("Your last roll was: " + rollingDice);
应该是
Debug.Log ("Your last roll was: " + rollingDice());
顺便说一下,我想它一定是个拼写错误,但是如果它是一个常见的约定,那么括号是方法名称的旁边,所以在某些情况下删除你拥有的空间。例如:
void Start ()
{
rollingDice ();
}
应该是:
void Start()
{
rollingDice();
}