我正在尝试学习如何使用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);
}
}
}
答案 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并添加脚本。
如果检查员显示不变量:
或
没有太多的秘密,如果一切都很好,变量是公共的,这是在脚本的方法之外,以便在检查员中看到它。
一个提示,不要在FixedUpdate或Update中使用GetComponent或Instantiate,因为它们很昂贵,将Rigidbody2D保存在Start中的变量中,然后使用它。
抱歉我的英文,祝你好运。