所以基本上,想想Mario,我有一张世界地图。玩家进入一个关卡,然后当玩家返回到地图时,我希望它加载玩家最后离开的相机位置。我在执行此操作时遇到了麻烦,并且不断将其重置为原始相机位置。
这是我到目前为止尝试过的:
我有一个带有以下代码的WorldManager类:
private void Start()
{
highestLevelUnlocked = PlayerPrefsManager.GetHighestLevelUnlocked();
if (highestLevelUnlocked > 0)
{
rectTransform.offsetMin = new Vector2(PlayerPrefsManager.GetLastLevelViewedLeft(), rectTransform.offsetMin.x);
rectTransform.offsetMax = new Vector2(PlayerPrefsManager.GetLastLevelViewedRight(), rectTransform.offsetMax.x);
}
else
{
rectTransform.offsetMin = new Vector2(0, 0);
rectTransform.offsetMax = new Vector2(0, 0);
}
}
// Sets the camera coordinates.
public void SetCameraCoordinates()
{
PlayerPrefsManager.SetLastLevelViewed(Mathf.RoundToInt(rectTransform.offsetMin.x), Mathf.RoundToInt(rectTransform.offsetMax.x));
}
我确定我做的事情完全错了,但我无法弄清楚,希望能有所作为。
PlayerPrefsManager是静态的,并保留场景之间的播放器数据。
谢谢!
编辑:我正在使用滚动视图,供播放器使用鼠标/拇指在地图上滚动。
答案 0 :(得分:0)
感谢所有关注此内容的人。我可以使用以下方法解决该问题:
private void Start()
{
lastLevelViewed = PlayerPrefsManager.GetLastLevelViewed();
if(lastLevelViewed > 0)
{
scrollRect.horizontalScrollbar.value = PlayerPrefsManager.GetLastLevelViewed();
}
else
{
scrollRect.horizontalScrollbar.value = 0;
}
}
// Sets the camera coordinates.
public void SetCameraCoordinates()
{
PlayerPrefsManager.SetLastLevelViewed(scrollRect.horizontalScrollbar.value);
}