脚本中的变量不显示在Inspector(Unity)中

时间:2017-08-31 13:22:26

标签: c# unity3d

我正在尝试学习如何使用Unity并遵循在线教程,但我目前遇到的问题是我不明白如何修复。

我的场景中有一个Sprite并且我已经附加了一个脚本但是在Inspector中它显示脚本在那里但我看不到里面的变量?我之前遇到过这个问题,它自行解决了。

此问题的原因是什么/我该如何解决?

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);
        }
    }

}

2 个答案:

答案 0 :(得分:2)

编辑:问题通过重新导入解决了。

您需要将变量声明为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()
    {
    }
}

答案 1 :(得分:0)

不是问题,你忘了肯定做某事。

首先与Unity相同。

重新开始。

在场景中创建一个新的GameObject并添加脚本。

如果检查员显示不变量:

  1. 变量不公开(假,如果你的脚本是公开的)
  2. 脚本中有一些语法错误!
    1. 您没有将正确的脚本添加到GameObject。
    2. 没有太多的秘密,如果一切都很好,变量是公共的,这是在脚本的方法之外,以便在检查员中看到它。

      一个提示,不要在FixedUpdate或Update中使用GetComponent或Instantiate,因为它们很昂贵,将Rigidbody2D保存在Start中的变量中,然后使用它。

      抱歉我的英文,祝你好运。