unity3d 从游戏对象获取错误示例[已关闭]

pn9klfpd  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(107)

2天前关闭。
Improve this question
我在Unity中使用C#,遇到了这个奇怪的问题。
我有两个类,* PlayerController * 和 * Meteor *。我在Meteor中使用了播放器控制器的示例,但它们看起来不一样。代码如下:

class PlayerController
{
    void Update()
    {
        Debug.Log(isShaking);

        if(powerUp.shake)
        {
            isShaking = true;
        }

        if(isShaking)
        {
            shakingTimer += Time.deltaTime;
            if(shakingTimer >= 15)
            {
                shakingTimer = 0;
                isShaking = false;
            }
        }
    }
}
class Meteor
{
   // OP: Add your player controller declaration and assignment here.

   void Update()
   {
       Debug.Log(playerController.isShaking);
   }
}

在控制台中,类中包含isShaking的日志:

    • 播放器控制器 * 返回TRUE,
    • 流星 * 返回FALSE

我想我调用了相同的变量...我该如何修复这个问题?
我搜索了其他脚本以查看是否有其他语句更改isShaking,但没有找到任何语句。

jobtbby3

jobtbby31#

正如您所解释的,您似乎从不同的playerController示例获取日志。
我不确定如何在Meteor类上分配播放器控制器,但如果不是公共的,请尝试将其设置为[SerializeField],以便在检查器中分配。

// In the 'Meteor' class
[SerializeField] PlayerController playerController;

每个玩家应该只有一个 * PlayerController * 组件,可能在玩家游戏对象上,然后在需要访问该类的示例时从该游戏对象中获取该组件。
另外,为了避免接收过多日志,请将日志放在更改变量的块中,例如:
x一个一个一个一个x一个一个二个x

相关问题