C# 我在2D Unity游戏中使用C时出错,说我的5个名字;“在当前上下文中不存在”;
我在2D Unity游戏中使用C#时出错,说我的5个名字“在当前上下文中不存在” 我尝试过修改代码,并在网上寻找方法,但没有任何效果 我的代码是:C# 我在2D Unity游戏中使用C时出错,说我的5个名字;“在当前上下文中不存在”;,c#,unity3d,C#,Unity3d,我在2D Unity游戏中使用C#时出错,说我的5个名字“在当前上下文中不存在” 我尝试过修改代码,并在网上寻找方法,但没有任何效果 我的代码是: using UnityEngine; public class MovementManager : MonoBehaviour { public enum type { platformer, topDown }; public type moveType; public float moveSpeed, jumpHeight;
using UnityEngine;
public class MovementManager : MonoBehaviour
{
public enum type { platformer, topDown };
public type moveType;
public float moveSpeed, jumpHeight;
public bool onGround = false;
private type platformer;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetAxisRaw("Horizontal") > 0)
{
transform.Translate(Vector2.right * Time.deltaTime * moveSpeed);
}
else if (Input.GetAxisRaw("Horizontal") < 0)
{
transform.Translate(Vector2.left * Time.deltaTime * moveSpeed);
}
if (moveType == type.platformer && Input.GetAxisRaw("Vertical") > 0 && onGround)
{
GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);
}
if (moveType == type.topDown && Input.GetAxisRaw("Vertical") > 0)
{
transform.Translate(Vector2.up * Time.deltaTime * moveSpeed);
}
if (moveType == type.topDown && Input.GetAxisRaw("Vertical") < 0)
{
transform.Translate(Vector2.down * Time.deltaTime * moveSpeed);
}
}
private void OnCollisionEnter2D (Collision2D obj)
{
if (obj.gameObject.tag == "ground")
{
onGround = true;
}
}
private void OnCollisionExit2D(Collision2D obj)
{
if (obj.gameObject.tag == "ground")
{
onGround = false;
}
}
}
使用UnityEngine;
公共类移动管理器:MonoBehavior
{
公共枚举类型{platformer,topDown};
公共类型移动类型;
公众浮标移动速度、跳跃高度;
public bool onGround=false;
专用型平台;
//用于初始化
void Start()
{
}
//每帧调用一次更新
无效更新()
{
if(Input.GetAxisRaw(“水平”)>0)
{
transform.Translate(Vector2.right*Time.deltaTime*moveSpeed);
}
else if(Input.GetAxisRaw(“水平”)<0)
{
transform.Translate(Vector2.left*Time.deltaTime*moveSpeed);
}
if(moveType==type.platformer&&Input.GetAxisRaw(“垂直”)>0&&onGround)
{
GetComponent().AddForce(Vector2.up*跳跃高度,ForceMode2D.pulse);
}
如果(moveType==type.topDown&&Input.GetAxisRaw(“垂直”)>0)
{
transform.Translate(Vector2.up*Time.deltaTime*moveSpeed);
}
if(moveType==type.topDown&&Input.GetAxisRaw(“垂直”)<0)
{
transform.Translate(Vector2.down*Time.deltaTime*moveSpeed);
}
}
专用空心OnCollisionInter2D(碰撞2D对象)
{
如果(obj.gameObject.tag==“地面”)
{
onGround=正确;
}
}
专用空心OnCollisionExit2D(碰撞2D obj)
{
如果(obj.gameObject.tag==“地面”)
{
onGround=假;
}
}
}
我有5个错误。其中4个看起来一样,但不是。(检查括号中的数字。)它们是:
“Assets/Scripts/MovementManager.cs(24,13):错误CS0103:名称'transform'在当前上下文中不存在”
“Assets/Scripts/MovementManager.cs(28,13):错误CS0103:名称'transform'在当前上下文中不存在”
“Assets/Scripts/MovementManager.cs(33,13):错误CS0103:名称`GetComponent'在当前上下文中不存在”
“Assets/Scripts/MovementManager.cs(38,13):错误CS0103:名称'transform'在当前上下文中不存在”
“Assets/Scripts/MovementManager.cs(42,13):错误CS0103:名称“transform”在当前上下文中不存在”首先,我建议将任何枚举定义放在单独的文件中 您的错误是因为您在类中定义了一个枚举,并在定义后放置了一个分号。删除分号可能会解决您的错误。但是,正如我所说的,我建议将整个枚举放在一个单独的文件中。如果您不希望这样,我建议将枚举放在类定义之外。这样,它仍然可以在其他脚本中使用 例如
还要避免将任何类或枚举命名为“type”,因为type是一个现有类,很容易导致混淆和/或错误 啊,对。您可能需要告诉脚本先查看游戏对象。尝试将
gameObject.transform
和gameObject.GetComponent
添加到脚本中。这一定不是必需的,通常代码可以正常工作。。
public enum MoveType
{
platformer,
topdown
}