c# - 如何从另一个场景访问字符串?(统一)
问题描述
我正在制作一个石头剪刀布游戏,在脚本“游戏”的一个场景中,玩家选择被分配了一个字符串值。在脚本“结果”的下一个场景中,我需要比较玩家选择和计算机选择。该脚本能够访问计算机选项,因为它是在同一个脚本中定义的,并且我认为我可以访问玩家选项,因为我将它设置为公共变量,但它说它在当前上下文中不存在。
'''
// Game script
public string playerChoice;
public void Rock()
{
playerChoice = "Rock";
}
public void Paper()
{
playerChoice = "Paper";
}
public void Scissors()
{
playerChoice = "Scissors";
}
public void Shoot()
{
SceneManager.LoadScene(2);
}
// Result script
void Start()
{
string[] computerOptions = new string[3] { "Rock", "Paper", "Scissors" };
int place = Random.Range(1, 4);
string computerChoice = computerOptions[place];
if(computerChoice == playerChoice)
{
}
}
''' 任何帮助将不胜感激。
解决方案
您可以使用DontDestroyOnLoad添加经理游戏对象。在那个游戏对象上,您可以添加一个看起来像这样的GameController.cs脚本:
public class GameController : MonoBehaviour
{
public playerChoice = null;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
}
}
然后,在您的游戏脚本中,从场景中找到并设置 playerChoice 值
// Game Script
public GameObject controller = GameObject.Find("GameController").GetComponent<GameController>();;
// When updating player choice, use
controller.playerChoice = 'rock'; // etc
现在,在结果脚本中,您也可以访问控制器脚本
public GameObject controller = GameObject.Find("GameController").GetComponent<GameController>();
// Your if check
if(computerChoice == controller.playerChoice)
{
//do stuff
}
推荐阅读
- 2sxc - 在 2sxc 的代码中使用关系过滤器
- textview - TextView 的背景颜色
- wpf - 使用 ItemSource 使用 ListView WPF 拖放失败
- vhdl - VHDL将可变长度的有符号初始化为最大值
- json - JSON MVC 图表未在视图中呈现
- angular - 有没有办法一起使用 ngModel 和 NgFor ?
- android - 如何在 Android Studio 中通过 Glide 在标头中添加授权?
- python - 如何检查 Python 集合中的字符串
- eclipse - 未解决的参考:在 Eclipse 中使用 Kotlin 的 pow
- laravel - 为什么此验证不起作用?