如何将 JavaScript 代码转换为 C# for Unity2D
本文关键字:for Unity2D 转换 代码 JavaScript | 更新日期: 2023-09-27 18:34:46
我有这段代码,是我用javascript为我的游戏制作的,现在我正在尝试将其转换为c#。我想我大部分都做对了,但我在pauseGUI.enabled = false;
时遇到了错误
using UnityEngine;
using System.Collections;
public class Pause : TouchLogicV2 {
bool pause = false;
GUITexture pauseGUI;
pauseGUI.enabled = false;
public override void OnTouchBegan()
{
if(pause==true){
pause = false;
}
else {
pause = true;
} if(pause == true) {
Time.timeScale = 0.0;
pauseGUI.enabled = true;
}
else {
Time.timeScale = 1.0;
pauseGUI.enabled = false;
}
}
}
这不起作用的原因是因为你试图在错误的范围内更改GUITexture
的属性。只能在方法外部创建和分配属性。将 pauseGUI.enabled 的赋值移动到构造函数,如下所示:
public Pause() {
pauseGUI.enabled = true;
}
正如程序员指出的那样,您也可以在Start
方法中执行此操作。
其次,这更像是一个风格问题,你永远不需要写if(x == true)
- 只需写if(x)
。
有三件事会导致编译器错误。
1( 7号线pauseGUI.enabled = false;
不能在类中设置类属性。您必须在类内部的函数中执行此操作。例如:
void Start ()
{
pauseGUI.enabled = false;
}
您也可以在OnTouchBegan((函数中执行此操作。
您还可以创建一个自定义函数,您可以调用该函数来启用您的 paugeGUI。
2(如果您修复第一个问题,则第17行和第21行也会导致错误。这些行包含
Time.timeScale = 0.0; and Time.timeScale = 1.0;
它会导致错误,因为时间刻度是浮点数的数据类型。要修复它,您必须在分配给timeScale 的每个数字的末尾添加"F"。它应该看起来像这样:
Time.timeScale = 0.0F; and Time.timeScale = 1.0F;
以下是您的整个固定代码:
using UnityEngine;
using System.Collections;
public class Pause : TouchLogicV2 {
bool pause = false;
GUITexture pauseGUI;
//pauseGUI.enabled = false; This must be done inside a function
public override void OnTouchBegan()
{
if(pause==true){
pause = false;
}
else {
pause = true;
} if(pause == true) {
Time.timeScale = 0.0F; //Must have F at the end of the number
pauseGUI.enabled = true;
}
else {
Time.timeScale = 1.0F; //Must have F at the end of the number
pauseGUI.enabled = false;
}
}
}