我是C#和Unity的新手,我正在通过视频了解它,制作了一个脚本,可以不断登录到控制台,每个日志都会自动加倍
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
// Use this for initialization
void Start () {
int Example;
Example = 1;
}
// Update is called once per frame
void Update () {
Example = Example * 2;
Debug.Log(Example);
}
}
我从逻辑上思考,因为
// Use this for initialization
void Start ()
是开始,它只运行一次,所以我在那里创建并设置了一个变量
int Example;
Example = 1;
然后使用更新每一帧的那个
// Update is called once per frame
void Update ()
加倍数
Example = Example * 2;
Debug.Log(Example);
但是当我将它应用到一个对象并单击播放时它会显示"所有编译器错误必须先修复才能进入播放模式"并且在错误日志中它有1个警告和2个错误:
警告:Assets / Example.cs(9,13):警告CS0219:变量`Example'已分配,但其值从未使用
错误:Assets / Example.cs(15,19):错误CS0119:表达式表示type', where a
变量',value' or
方法组'预计
错误:Assets / Example.cs(16,19):错误CS0119:表达式表示type', where a
变量',value' or
方法组'预计
我觉得这与系统无法识别"示例" 作为一个存在的变量,我从未在
之前定义它之前得到这个变量这可能是一个非常不正常的错误,但我仍然需要从错误中吸取教训。
答案 0 :(得分:2)
我的猜测是你的变量Example
的范围不正确,所以你的更新方法不知道它存在。试试这个:
public class Example : MonoBehaviour {
int example; //We declare it outside of the method so it is in the correct scope
// Use this for initialization
void Start () {
example = 1;
}
// Update is called once per frame
void Update () {
example = example * 2;
Debug.Log(example);
}
}
编辑:正如@Jon指出的那样,你的变量名与你的类名相同,这对编译器来说很困惑。使用其他名称。对于此示例,我只是将其设为小写example
答案 1 :(得分:1)
您需要阅读一些基本的C#
书籍并调查变量范围。
另外C#
关心case,所以你调用int就像类一样,编译器不知道该怎么做。
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
public int example;
// Use this for initialization
void Start()
{
example = 1;
}
// Update is called once per frame
void Update()
{
example = example * 2;
Debug.Log(example);
}
}
Unity网页有很多教程,速度非常快,但暂停和快退以及代码和它们应该可以帮到你。 https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial
答案 2 :(得分:0)
错误是因为您有一个与您的类同名的变量。改变" int示例"别的什么。
答案 3 :(得分:0)
以下是一些提示(查看注释行)
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour { // <---- Class name is capitalized so dont use same capitalization for "example" inside of class
int example; // <----- Put example here so it exists throughout the whole class
// Use this for initialization
void Start () {
example = 1; // <---- initialization
}
// Update is called once per frame
void Update () {
Debug.Log(example *= 2); // <------- Code shortening FTW
}
}
答案 4 :(得分:-1)
您的“示例”成员超出了范围。正如Will指出的那样,该成员与您的班级同名。 见下文
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
int myExample;
// Use this for initialization
void Start () {
myExample = 1;
}
// Update is called once per frame
void Update () {
myExample = myExample * 2;
Debug.Log(myExample);
}
}