簡體   English   中英

如何修復“必須先修復所有編譯器錯誤才能進入播放模式!” Unity中的錯誤

[英]How do I fix "All compiler errors have to be fixed before you can enter playmode!" error in Unity

我是一名新程序員,我一直在嘗試統一制作一個簡單的視頻游戲,但是到目前為止我無法測試我的進度,因為我無法在 Unity 中進入游戲模式......我收到消息“所有編譯器必須先修復錯誤才能進入播放模式”,然后我 go 來檢查錯誤:它們是以下 5 個:

  • 錯誤 CS1519:class、記錄、結構或接口成員聲明中的令牌“{”無效

  • 錯誤 CS1519:class、記錄、結構或接口成員聲明中的令牌“(”無效

  • 錯誤 CS8124:元組必須包含至少兩個元素。

  • 錯誤 CS1519:無效令牌“;” 在 class 中,記錄、結構或接口成員聲明

  • 錯誤 CS1022:類型或命名空間定義,或預期文件結尾

這是代碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class InputManager : MonoBehaviour
{
    private PlayerInput playerInput;
    private PlayerInput.OnFootActions onFoot;

    private PlayerMotor motor;
    // Start is called before the first frame update
    void Awake()
    {
        playerInput = new PlayerInput();
        onFoot = playerInput.OnFoot;
        motor = GetComponent<PlayerMotor>();
        onFoot.Jump.performed += ctx => motor.Jump();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        //tell the playermotor to move using the value from our movement action.
        motor.ProcessMove(onFoot.Movement.ReadValue<Vector2>());
    }

    private void OnEnable()
    {
        onFoot.Enable();
    }

    private void OnDisable();
    {
        onFoot.Disable();
    }

}

誰能告訴我這些錯誤的含義以及我該如何解決它們?

先感謝您: :)

如果您偶然發現錯誤消息並且不理解它們的描述,請嘗試在互聯網上查找它們的代碼。 例如https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1519可以為您提供有關第一個錯誤的一些見解。 其他東西也是如此。

關於錯誤 CS1519: invalid token '{' in class, record, struct or interface member declaration您可以在文檔中閱讀:

每當在不屬於它的位置遇到令牌時,都會生成此錯誤。 令牌是關鍵字; 標識符(class、結構、方法等的名稱); 字符串、字符或數字文字值,例如 108、“Hello”或“A”; 或運算符或標點符號,例如 == 或;。

在您的情況下,令牌是; 它不屬於這里: private void OnDisable();

這個分號是問題所在,因為它使您的方法沒有主體(當它應該有一個時),以及您的方法調用onFoot.Disable(); 現在被視為僅在 class 內部制作,而不是方法,這是無效的。

通常,此錯誤通常表示各種類型的拼寫錯誤。

錯誤 CS1022:類型或命名空間定義,或預期的文件結尾只是前面提到的分號的結果,它會在文件中進一步傳播。

至於錯誤 CS8124:元組必須包含至少兩個元素。 我在粘貼到我的項目的代碼中看不到這個錯誤,也許這是你沒有粘貼到這里的另一個文件中的錯誤。 但是該消息清楚地表明了原因:您正在使用一個包含少於 2 個元素的元組。 或者,它可能是另一個錯字,使編譯器認為您正在使用元組。

建議:

(如果我錯了,請糾正我)你從某個地方復制了代碼並試圖讓它在你的游戲中工作,對嗎?

因此,對於命名空間錯誤,這可能是因為您沒有從 package 管理器統一導入新的 inputSystem package,據我了解,您的代碼其他錯誤不屬於此腳本,因此您的項目中可能還有其他一些腳本編譯時導致這些錯誤...

因此,除非您的腳本正確編譯(沒有任何問題/錯誤),否則基本上無法解決該錯誤(或者換句話說,您無法進入播放模式),因此您可以通過某種方式檢查哪個腳本正在通過該錯誤和在哪一行,所以你只需要 go 到你的統一編輯器控制台(windows 的快捷方式:Ctrl + Shift + C 導致問題)並雙擊錯誤

你的錯誤意味着:

第一個錯誤意味着您的腳本中有一個額外或更少的“{”花括號。

第二個錯誤意味着您的腳本中有一個額外或更少的 '(' 括號(也稱為小括號)。

因此,您可能錯誤地在代碼中插入了這些括號,或者您在代碼中刪除了括號的一側,這也可能是發生這些錯誤的原因。 (解決方案:檢查您的腳本並放置或刪除缺少的括號或是否有額外的括號)

第三個錯誤意味着您有一個“元組”數據類型變量,但其中不包含最少數量的元素。

所以基本上元組是一種數據類型,它在一個變量中存儲多種類型的變量(讓你更容易理解),所以正如我在檢查並雙擊該錯誤之前告訴你的那樣,它會引導你到導致的行錯誤並嘗試修復它。

第 4 個錯誤意味着(再次與括號相同)您額外或更少的 ';' 腳本中的分號。

第 5 個錯誤意味着您缺少對命名空間的引用,在您的情況下(如果我沒記錯的話)是因為您沒有導入輸入系統的庫 / package 所以......

無論如何,希望你能從中理解一些新的東西,如果我把它弄得如此混亂,我很抱歉......

希望它有所幫助......快樂的編碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM