unity3d 脚本中的变量不显示在检查器中(Unity)

h9vpoimq  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(708)

我正在学习如何使用Unity并遵循在线教程,但我目前遇到了一个问题,我不知道如何解决。
我有一个雪碧在我的场景,我已经附加了一个脚本,但在检查器中,它显示脚本在那里,但我不能看到里面的变量?我以前遇到过这个问题,它自己解决了。
此问题的原因是什么/如何修复?

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

public class SpaceShip : MonoBehaviour {

    public float speed = 30;

    public GameObject theBullet;

    private void FixedUpdate()
    {
        float horzMove = Input.GetAxisRaw("Horizontal");

        GetComponent<Rigidbody2D>().velocity = new Vector2(horzMove, 0) * 
            speed;
    }

    // Update is called once per frame
    void Update () {

        if (Input.GetButtonDown("Jump"))
        {
            Instantiate(theBullet, transform.position, Quaternion.identity);
        }
    }

}

字符串

yyyllmsg

yyyllmsg1#

编辑:通过重新导入解决了问题。
您需要将变量声明为Public[SerializeField],以使成员变量显示在检查器中。请注意,通过将某个变量声明为public,可以从类外部访问该变量(例如,从其他脚本/类)。默认情况下,private被分配给成员变量。
范例:

public class testscript : MonoBehaviour
{
    public int foo; // shows up in inspector
    [SerializeField] private int bar; // also shows up while still being private

    void Start()
    {
    }
}

字符串

yxyvkwin

yxyvkwin2#

不是问题,你肯定忘了做什么。
这在Unity中是常见的。
重新开始
在场景中创建一个新的游戏对象并添加脚本。
如果检查器显示无变量:
1.变量do不是public(false,如果在脚本中是public)
1.脚本中有一些语法错误!
或者是
1.您没有向游戏对象添加正确的脚本。
没有太多的秘密,如果一切都足够好,变量是公共的,这在脚本的方法之外,以便在检查器中看到它。
一个提示,不要在FixedUpdate或Update中使用GetComponent或Instantiate,因为它们很昂贵,将Rigidbody 2D保存在Start中的变量中,然后使用它。
对不起,我的英语,祝你好运。

weylhg0b

weylhg0b3#

有时,当您的代码中有一些错误时,它会发生,并且不会显示在控制台中。要修复它,请关闭并再次打开Unity编辑器,它会询问我们是否要进入安全模式来修复这些错误。在安全模式下修复后,它会自动关闭并进入正常模式,并在检查器中显示变量。

相关问题