javascript - Unity3D : Error with my code

标签 javascript unity-game-engine error-handling

我的代码出现错误,想知道是否有人可以帮助我解决这个问题,我搜索了问题并尝试了解决方案,但似乎没有任何效果。 (我尝试/搜索的内容:将我的 c# 脚本链接到标准 Assets 文件夹中的以下脚本)谢谢!

这是我得到的错误:

名称“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);
    }
 }

最佳答案

这一行是你的问题。

gameManager = FindObjectOfType(GameManager);

应该是这样的:

gameManager = (GameManager)FindObjectOfType(typeof(GameManager));

备选方案:

如果该游戏对象与上述脚本所在的游戏对象不同:

gameManager = GameObject.FindWithTag("SomeTag").GetComponent<GameManager>();

如果它在同一个游戏对象上,这样做:

gameManager = GetComponent<GameManager>();

或者使用检查器给变量赋值。

当然,如果所有这些都不起作用,那么您实际上并没有将 GameManager 脚本附加到某些东西上。

关于javascript - Unity3D : Error with my code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38202153/

相关文章:

javascript - python 相当于 Meteorserver 或 Derbyjs 或 Angularjs?

javascript - 由于验证错误,asp.net 后退按钮未回发

javascript - 在 JavaScript 中创建时间点数组

animation - Unity 3d显示特定帧的动画

unity-game-engine - 使用 AddressableAssets.LoadAssetsAsync

android - 哪些设备支持 unity?

php - 数据库中的 Laravel 错误报告

error-handling - 从内部调用向多个结果添加上下文

javascript - 将目标 ="_blank"添加到 anchor 标记

javascript - 检测是否使用 JavaScript 中正确数量的参数调用函数的最佳方法