如何在预制件中引用另一个脚本中的变量?(初学者的问题)



我有一款游戏,玩家需要加时加速并发射子弹。我希望子弹相对于玩家保持相同的速度。所以我必须在玩家脚本中引用速度变量。

我在这里发现了一个类似的情况,

如何在Unity的预制脚本中引用GameObject's位置

但是在这里他们想要得到一个组件而我想要得到一个变量

那么如何在预制中引用另一个脚本中的变量呢?

On bullet prefab i have try

public PlayerScript playerReference;然后playerReference.speed;

这就是我通常如何获得引用,但我不能在unity编辑器中分配PlayerScript,因为子弹头是预制的。

你将需要在每个项目中以这样或那样的方式引用玩家。下面是一种方法:

  • 当你创建子弹头时,获取子弹头脚本并将Player分配给它在你的PlayerScript中:
void Shoot() 
{
var bullet = Instantiate(bulletPrefab, bla, bla, bla);
var bulletScript = bullet.GetComponent<YourBulletScript>();
bulletScript.PlayerScript = this;
}

然后在YourBulletScript代码中你会得到这样的速度:

speed = speed + Player.speed;

Psuedocode因为你没有提供你自己的代码,如果你想要它更详细,你需要在你的问题更详细:)

首先,你需要引用玩家GameObject。例如,您可以这样做:首先用任意标记标记播放器(在下面的情况下,标记是" player "),然后将以下代码放入项目符号的脚本中:

player = GameObject.FindWithTag("Player");
从那里,您可以通过在项目符号脚本中使用以下代码来引用特定变量,以便利用速度:
bulletSpeed = player.GetComponent<PlayerScript>().speed

祝你好运,希望这能奏效!

相关内容

  • 没有找到相关文章

最新更新