我是编程的新手,所有东西。我在youtube上观看了如何创建蛇游戏,并且想为按钮添加脚本来移动播放器。我创建了ui buttons like this,但是当我单击它们时,没有任何反应。我为跨平台添加了简单的资产,并且已经完成了所有工作,但是我不知道如何编写脚本。我可以使用W A S D
键移动蛇,但是我想使用UI按钮移动。这是我的脚本:
private void Update()
{
if (isGameOver)
{
if (Input.GetKeyDown(KeyCode.R) || Input.GetMouseButtonDown(0))
{
onStart.Invoke();
}
return;
}
GetInput();
if (isFirstInput)
{
SetPlayerDirection();
timer += Time.deltaTime;
if (timer > moveRate)
{
timer = 0;
curDirection = targetDirection;
MovePlayer();
}
}
else
{
if (up || down || left || right)
{
isFirstInput = true;
firstInput.Invoke();
}
}
}
void GetInput()
{
up = Input.GetButtonDown("Up");
down = Input.GetButtonDown("Down");
left = Input.GetButtonDown("Left");
right = Input.GetButtonDown("Right");
}
void SetPlayerDirection()
{
if (up)
{
SetDirection(Direction.up);
}
else if (down)
{
SetDirection(Direction.down);
}
else if (left)
{
SetDirection(Direction.left);
}
else if (right)
{
SetDirection(Direction.right);
}
}
void SetDirection(Direction d)
{
if (!isOpposite(d))
{
targetDirection = d;
}
}
void MovePlayer()
{
int x = 0;
int y = 0;
switch (curDirection)
{
case Direction.up:
y = 1;
break;
case Direction.down:
y = -1;
break;
case Direction.left:
x = -1;
break;
case Direction.right:
x = 1;
break;
}
Node targetNode = GetNode(playerNode.x + x, playerNode.y + y);
if (targetNode == null)
{
//Game Over
onGameOver.Invoke();
}
else
{
if (isTailNode(targetNode))
{
//GameOver
onGameOver.Invoke();
}
else
{
bool isScore = false;
if (targetNode == appleNode)
{
isScore = true;
}
Node previousNode = playerNode;
availbableNodes.Add(previousNode);
if (isScore)
{
tail.Add(CreateTailNode(previousNode.x, previousNode.y ,tailParent));
availbableNodes.Remove(previousNode);
}
MoveTail();
PlacePlayerObject(playerObj, targetNode.worldPosition);
playerNode = targetNode;
availbableNodes.Remove(playerNode);
if (isScore)
{
currentScore++;
if(currentScore >= highScore)
{
highScore = currentScore;
}
onScore.Invoke();
if (availbableNodes.Count > 0)
{
RandomlyPlaceApple();
}
else
{
//you won
}
}
}
}
}
答案 0 :(得分:1)
对于初学者来说,Unity has a great ~13 minute video on using UI Buttons。观看此视频后,您将了解如何将UI按钮连接到事件(如果您想跳过按钮如何工作的视觉细节,请在8:25观看)。接下来,您需要为脚本中的四个方向按钮添加四个功能,如下所示:
public void UpButtonPressed()
{
SetDirection(Direction.up);
}
public void DownButtonPressed()
{
SetDirection(Direction.down);
}
public void LeftButtonPressed()
{
SetDirection(Direction.left);
}
public void RightButtonPressed()
{
SetDirection(Direction.right);
}
然后将它们附加到检查器中正确按钮的OnClick
事件(如该视频中8:25所述)。
答案 1 :(得分:1)
那应该很简单。您可以创建处理事件的方法。例如,假设您要将SetDirection(Direction.up);
绑定到“ 向上按钮” ,则可以为此目的创建一个方法。
public void UpDirection(){
SetDirection(Direction.up);
}
返回编辑器,单击“向上”按钮,通过单击+号添加一个OnClick
事件。将脚本拖到空白位置,然后从DropDown中选择相关功能。我希望你能得到这个吗?