C#CS8025解析错误
我想知道是否有人能帮我找出以下脚本中的错误。以下是错误: Assets/Scripts/PlayerInput.cs(1,37):错误CS8025:解析错误 任何帮助都将不胜感激。代码如下C#CS8025解析错误,c#,unity3d,C#,Unity3d,我想知道是否有人能帮我找出以下脚本中的错误。以下是错误: Assets/Scripts/PlayerInput.cs(1,37):错误CS8025:解析错误 任何帮助都将不胜感激。代码如下 private class GridManager gridManager; public LayerMask Tiles; private GameObject activeTile; void Awake () { gridManager = GetComponent(); } void
private class GridManager gridManager;
public LayerMask Tiles;
private GameObject activeTile;
void Awake ()
{
gridManager = GetComponent();
}
void Update ()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (ActiveTile == null)
SelectTile ();
else
AttemptMove ();
}
}
void SelectTile ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = GetRayIntersection(ray, 50f, Tiles);
if (hit)
activeTile = hit.collider.gameObject;
}
void AttemptMove ()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = GetRayIntersection(ray, 50f, Tiles);
if (hit)
{
if (NeighborCheck (hit.collider.gameObject)
{
activeTile.GetComponent().Move(hit.collider.gameObject.transform.position);
hit.collider.gameObject.GetComponent().Move(activeTile.transform.position);
gridManager.CheckMatches();
}
}
}
bool NeighborCheck (GameObject objectToCheck)
{
int xDifference = Mathf.Abs (activeTile.transform.position.x - objectToCheck.transform.position.x);
int yDifference = Mathf.Abs (activeTile.transform.position.y - objectToCheck.transform.position.y);
if (xDifference + yDifference == 1)
return true;
else
return false;
}
// Move script
private GridManager gridManager;
void Awake ()
{
gridManager = GetComponent();
}
public void Move (Vector2 destination)
{
transform.position = destination; // provisional
}
当代码中有1个错误时,请停止并在继续之前修复它。您的代码中有10多个编译器错误。经过大量修改后,我能够编译代码。请认真对待
if(ActiveTile==null)
更改为if(ActiveTile==null)
GetRayIntersection(光线、50f、平铺)代码>从SelectTile()
和AttemptMove()
函数到Physics2D.GetRayIntersection(光线,50f,平铺)代码>
gridManager=GetComponent()代码>从Awake()
函数到gameObject.GetComponent()代码>
Mathf.Abs(activeTile.transform.position.x-objectToCheck.transform.position.x)
和Mathf.Abs(activeTile.transform.position.y-objectToCheck.transform.position.y)代码>
到
Mathf.Abs((int)(activeTile.transform.position.x-objectToCheck.transform.position.x));
Abs((int)(activeTile.transform.position.y-objectToCheck.transform.position.y))代码>
hit.collider.gameObject.GetComponent().Move(activeTile.transform.position)代码>
到
activeTile.GetComponent().Move(hit.collider.gameObject.transform.position)
hit.collider.gameObject.GetComponent().Move(activeTile.transform.position)代码>
)
”添加到if(neightrcheck(hit.collider.gameObject)
所以你应该有if(neightrcheck(hit.collider.gameObject))
私有类GridManager GridManager;
更改为私有GridManager GridManager;
Awake()
函数中的gridManager=GetComponent();
更改为gridManager=GetComponent();
public class PlayerInput : MonoBehaviour
{
private GridManager gridManager;
public LayerMask Tiles;
private GameObject activeTile;
void Awake()
{
gridManager = GetComponent();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (activeTile == null)
SelectTile();
else
AttemptMove();
}
}
void SelectTile()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.GetRayIntersection(ray, 50f, Tiles);
if (hit)
activeTile = hit.collider.gameObject;
}
void AttemptMove()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.GetRayIntersection(ray, 50f, Tiles);
if (hit)
{
if (NeighborCheck(hit.collider.gameObject))
{
activeTile.GetComponent<CharacterController>().Move(hit.collider.gameObject.transform.position);
hit.collider.gameObject.GetComponent<CharacterController>().Move(activeTile.transform.position);
gridManager.CheckMatches();
}
}
}
bool NeighborCheck(GameObject objectToCheck)
{
int xDifference = Mathf.Abs((int)(activeTile.transform.position.x - objectToCheck.transform.position.x));
int yDifference = Mathf.Abs((int)(activeTile.transform.position.y - objectToCheck.transform.position.y));
if (xDifference + yDifference == 1)
return true;
else
return false;
}
void Awake()
{
gameObject.GetComponent<GridManager>();
}
public void Move(Vector2 destination)
{
transform.position = destination; // provisional
}
}
公共类PlayerInput:MonoBehavior
{
私人网格管理器网格管理器;
公共层面砖;
私有游戏对象动态瓷砖;
无效唤醒()
{
gridManager=GetComponent();
}
无效更新()
{
if(Input.GetKeyDown(KeyCode.Mouse0))
{
如果(activeTile==null)
选择tile();
其他的
尝试移动();
}
}
void SelectTile()
{
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
RaycastHit2D hit=Physics2D.GetRayIntersection(光线,50f,平铺);
如果(命中)
activeTile=hit.collider.gameObject;
}
void AttemptMove()
{
Ray-Ray=Camera.main.screenpointoray(输入.鼠标位置);
RaycastHit2D hit=Physics2D.GetRayIntersection(光线,50f,平铺);
如果(命中)
{
if(NeighborCheck(hit.collider.gameObject))
{
activeTile.GetComponent().Move(hit.collider.gameObject.transform.position);
hit.collider.gameObject.GetComponent().Move(activeTile.transform.position);
gridManager.CheckMatches();
}
}
}
布尔邻域检查(游戏对象对象检查)
{
intxdifference=Mathf.Abs((int)(activeTile.transform.position.x-objectToCheck.transform.position.x));
int-yddifference=Mathf.Abs((int)(activeTile.transform.position.y-objectToCheck.transform.position.y));
if(xDifference+yddifference==1)
返回true;
其他的
返回false;
}
无效唤醒()
{
gameObject.GetComponent();
}
公共无效移动(矢量2目的地)
{
transform.position=destination;//临时
}
}
这不是整个脚本,要修复解析错误,需要整个脚本,因为您很可能在某个地方丢失了一个大括号。这是一个非常常见的问题,我猜您在发布之前没有真正搜索,因为您已经得到了很多答案。如果这是整个脚本,那么您需要先学习Coz您缺少关于如何声明类的知识。代码片段的第一行是错误的。私有类GridManager GridManager;
您不能“声明”类。另外,请格式化您的代码,不仅仅是为了我们,也是为了您自己。