尝试使场景负载的相机位置与未设置的位置相同

时间:2018-11-14 04:35:35

标签: c# unity3d

所以基本上,想想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是静态的,并保留场景之间的播放器数据。

谢谢!

编辑:我正在使用滚动视图,供播放器使用鼠标/拇指在地图上滚动。

1 个答案:

答案 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);
}