【问题标题】:Game won't start in Unity游戏无法在 Unity 中启动
【发布时间】:2021-07-07 09:57:12
【问题描述】:

我是编程新手,所以我使用 Unity 和 Windows Visual Studio 按照 Youtube 上的经典 RPG 游戏教程中的步骤进行操作,但游戏无法启动,尽管我已经将脚本分配给玩家,但他仍然没有移动。 这是我的代码:

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed;
    private bool isMoving;
    private Vector2 input;

    private void Ubdate()
    {
        if (!isMoving)
        {
            input.x = Input.GetAxisRaw("Horizontal");
            input.y = Input.GetAxisRaw("Vertical");

            if (input != Vector2.zero)
            {
                var targetPos = transform.position;
                targetPos.x += input.x;
                targetPos.y += input.y;

                StartCoroutine(Move(targetPos));
            }
        }
    }
    
    IEnumerator Move(Vector3 targetPos)
    {
        isMoving = true;
        while ((targetPos - transform.position).sqrMagnitude > Mathf.Epsilon)
        {
            transform.position = Vector3.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);
            yield return null;
        }
        transform.position = targetPos;

        isMoving = false;
    }
}

【问题讨论】:

  • 您的 Update 方法有错字。

标签: c# visual-studio unity3d


【解决方案1】:

您必须为层次结构分配一个事件系统:右键单击层次结构、UI、事件系统

【讨论】:

    【解决方案2】:

    你有一个错字,所以这个方法永远不会被调用。

    private void Ubdate()
    

    应该是

    private void Update()
    

    除了那个错字之外,协程也可能永远不会启动,因为 C# 中 bool 数据类型的默认值为 false,因此默认情况下 isMoving 将为 false,并且似乎永远不会改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 2015-07-05
      • 2021-08-30
      相关资源
      最近更新 更多