我是团结的新手,我正在尝试根据收集的物品加载场景。
问题是柜台没有计算我购买的物品。
我正在使用OnTriggerEnter2D()
来触发事件;以下是代码段:
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Player"))
{
collectionNumber += 1;
Destroy(gameObject);
if (collectionNumber == 1)
{
collision.gameObject.transform.Find("Acquired_Items").GetChild(0).gameObject.SetActive(true);
qiCollector.gameObject.transform.GetChild(0).gameObject.SetActive(true);
}
else if (collectionNumber == 2)
{
collision.gameObject.transform.Find("Acquired_Items").GetChild(1).gameObject.SetActive(true);
qiCollector.gameObject.transform.GetChild(1).gameObject.SetActive(true);
}
else if (collectionNumber == 3)
{
collision.gameObject.transform.Find("Acquired_Items").GetChild(2).gameObject.SetActive(true);
qiCollector.gameObject.transform.GetChild(2).gameObject.SetActive(true);
}
else
{
Debug.LogWarning("All Items Collected !!");
}
cN.text = "Collection Number " + collectionNumber.ToString();
}
}
每当加载新场景时,都会加载此脚本,因为它在我的任务项目上。并且对于每个场景都有一个任务项目。因此,我要做的基本上是跟踪我的collectionNumber
,但是它重置为0
。
非常感谢您的帮助:)
答案 0 :(得分:1)
第一种方法: 不允许在场景加载时破坏对象 https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html
public static void DontDestroyOnLoad(Object target);
上面的代码将防止在加载新场景时破坏销毁您的GameObject及其组件,从而防止脚本值
第二种方法: 将您唯一的价值写进玩家偏好 https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
// How to save the value
PlayerPrefs.SetInt("CollectionNumber", collectionNumber);
// How to get that value
collectionNumber = PlayerPrefs.GetInt("CollectionNumber", 0);
第三种方法: 实施保存机制: 在您的情况下,我不建议这样做