我目前正在开发一个2d平台游戏,以添加到我的投资组合中,我遇到了一个问题,希望有人可以帮助我
我在商店的一分钟有一个按钮,当单击以换取1000个硬币时,该按钮会增加1条生命,如果玩家没有足够的硬币来购买另一条生命,该按钮将停止工作,一切正常。
如果我直接加载到商店场景中,则没有问题,一切都会正常进行,但是,如果我在完成后从某个级别加载到商店场景中,则“单击”按钮上的脚本将被破坏,因此使按钮无法操作。
我正在使用游戏会话脚本来控制商店,投币游戏等,为此添加了一些内容,我认为这是在破坏按钮与脚本之间的联系。在关卡中,游戏会话脚本说要在与玩家碰撞时破坏硬币对象,但是当我将游戏会话脚本“链接”到商店场景上的按钮时,它会在加载时被破坏,从而使按钮无法使用。我当前的代码如下:
private void Awake()
{
{
int numGameSessions = FindObjectsOfType<GameSession>().Length;
if (numGameSessions > 1)
{
Destroy(gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
}
}
}
void Start()
{
livesText.text = playerLives.ToString();
scoreText.text = score.ToString();
}
private void TakeLife()
{
playerLives--;
var currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
SceneManager.LoadScene(currentSceneIndex);
livesText.text = playerLives.ToString();
}
public void AddToScore(int pointsToAdd)
{
score += pointsToAdd;
scoreText.text = score.ToString();
}
public void AddPlayerLives (int livesToAdd)
{
if (score >= 1000)
{
playerLives++;
livesText.text = playerLives.ToString();
AddToScore(LifeCost);
}
else
{
return;
}
}
public void ProcessPlayerDeath()
{
if (playerLives >= 1)
{
TakeLife();
}
else
{
SceneManager.LoadScene("Game Lose");
}
}
private void ResetGameSession()
{
SceneManager.LoadScene(0);
Destroy(gameObject);
}
}
谢谢
答案 0 :(得分:0)
将唤醒脚本更改为此,因为当前仅在游戏会话数小于1时设置DontDestroyOnLoad(gameObject);
。如果检查{{1,则还可以检查该对象的实例。 }}
instane == null
答案 1 :(得分:0)
感谢您的答复,我最终以另一种方式整理了我的问题,即为商店创建了一个新脚本,然后使用它来控制它。
再次感谢您