我在我的代码上收到错误,并且想知道是否有人可以帮助我,我搜索问题并尝试了灵魂,但似乎没有任何效果。 (我尝试/搜索的内容:将我的c#脚本链接到标准资源文件夹中的下面脚本)谢谢!
这是我得到的错误:
名称' GameManager'不表示有效类型('未找到')
这是代码
修改
var thisMaterial : Material;
private var gameManager : GameManager;
private var moveDirection : Vector2;
private var movePosition : Vector2;
private var lastDirection : int;
function Start()
{
gameManager = (GameManager)FindObjectOfType(typeof(GameManager));
thisMaterial = new Material(Shader.Find("Unlit/Transparent"));
GetComponent("MeshRenderer").material = thisMaterial;
thisMaterial.mainTexture = gameManager.game.characters[0].spriteSheet;
thisMaterial.mainTextureOffset = gameManager.animationList[0][0];
movePosition = gameManager.game.startPosition;
}
function Update()
{
var vectorMovePosition : Vector3 = Vector3(movePosition.x, movePosition.y, transform.position.z);
var distanceToVector : float = Vector3.Distance(transform.position, vectorMovePosition);
var inputDirection : Vector2 = Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized;
if(inputDirection != Vector2.zero && distanceToVector < 0.1)
{
if(inputDirection == -Vector2.up) lastDirection = 0;
else if(inputDirection == -Vector2.right) lastDirection = 1;
else if(inputDirection == Vector2.right) lastDirection = 2;
else if(inputDirection == Vector2.up) lastDirection = 3;
else return;
thisMaterial.mainTextureOffset = gameManager.animationList[lastDirection][0];
if(gameManager.game.scenes[gameManager.currentScene].GetTile(3, movePosition + inputDirection) == Vector2(-1, -1))
{
moveDirection = inputDirection;
movePosition = vectorMovePosition + moveDirection;
}
}
if(transform.position != vectorMovePosition)
{
thisMaterial.mainTextureOffset = gameManager.animationList[lastDirection][Mathf.Round(distanceToVector * 3)];
transform.position = Vector3.MoveTowards(transform.position, vectorMovePosition, Time.deltaTime * 3);
}
}
答案 0 :(得分:2)
这一行是你的问题。
gameManager = FindObjectOfType(GameManager);
这应该是这样的:
gameManager = (GameManager)FindObjectOfType(typeof(GameManager));
备选方案:
如果该游戏对象与上述脚本所在的游戏对象不同:
gameManager = GameObject.FindWithTag("SomeTag").GetComponent<GameManager>();
如果它在同一个游戏对象上,则会执行以下操作:
gameManager = GetComponent<GameManager>();
或使用检查器分配变量。
当然,如果所有这些都不起作用,那么实际上并没有附加GameManager
脚本。