如何修复此闲置汽车游戏脚本

时间:2018-10-05 11:11:01

标签: c# unity3d

我正在尝试开发一款游戏,每个人都可以购买汽车(并且我将这些数据保存到playerprefs中)。所以我在游戏中有9条关于赛车的踪迹,并且我正在尝试编写一些代码,以便当您按下按钮时,这辆汽车及其踪迹将出现。

单击旁边的按钮时,它将保存该数据,因此当人们重新启动游戏时,他们仍然可以打开汽车和步道,而无需再次按下按钮。

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine.UI;

public class GameManager : MonoBehaviour
{ 
    public Button[] TrailLevel; 
    public GameObject[] Cars, Trails;
    public Text text; 
    public int CurrentCarToSpawn = 0; 

    private void Start()
    { }

    private void FixedUpdate()
    {
        UpdateCar();
    }

    public void InstantiateCar()
    {
        TrailLevel[CurrentCarToSpawn].gameObject.active = false;
        MineLevel[CurrentCarToSpawn+1].interactable = true;
        PlayerPrefs.SetInt("TrailCountA", PlayerPrefs.GetInt("TrailCountA") + 1);
        PlayerPrefs.Save();
        CurrentCarToSpawn++;
        UpdateCar();
    }

    void UpdateCar()
    {
        int TrailCountA= PlayerPrefs.GetInt("TrailCountA", 1);
        for (int i = 0; i < TrailLevel.Length; i++)
        {
            if (i + 1 > TrailCountA)
            {
                 TrailLevel.interactable = false;
            }
            if (TrailLevel.interactable)
            {
                Trains[CurrentCarToSpawn].gameObject.active = true;
                Mines[CurrentCarToSpawn].gameObject.active = true;
            }
        }
        text.text = PlayerPrefs.GetInt("TrailCountA").ToString();
    }
}

1 个答案:

答案 0 :(得分:0)

从我的代码中可以看到,这就是我的处理方式:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; using UnityEngine.UI;

public class GameManager : MonoBehaviour
{ 
    public Button[] TrailLevel; 
    public GameObject[] Cars, Trails;
    public Text text; 
    public int CurrentCarToSpawn = 0; 

    private void Start()
    { 
        // Load the current car. ADDED
        CurrentCarToSpawn  = PlayerPrefs.getInt("savedSelection", 0);
        // Since we are loading the last selection, we need to call our
        // instantiation method so it can activate the appropriate 
        // GameObjects.
        InstantiateCar();
    }

    private void FixedUpdate()
    {
        UpdateCar();
    }

    public void InstantiateCar()
    {
        TrailLevel[CurrentCarToSpawn].gameObject.active = false;
        MineLevel[CurrentCarToSpawn+1].interactable = true;
        PlayerPrefs.SetInt("TrailCountA", PlayerPrefs.GetInt("TrailCountA") + 1);
        // Save that this is our current selection.
        PlayerPrefs.SetInt("savedSelection", CurrentCarToSpawn);             
        PlayerPrefs.Save();
        CurrentCarToSpawn++;
        UpdateCar();
    }

    void UpdateCar()
    {
        int TrailCountA= PlayerPrefs.GetInt("TrailCountA", 1);
        for (int i = 0; i < TrailLevel.Length; i++)
        {
            if (i + 1 > TrailCountA)
            {
                 TrailLevel.interactable = false;
            }
            if (TrailLevel.interactable)
            {
                Trains[CurrentCarToSpawn].gameObject.active = true;
                Mines[CurrentCarToSpawn].gameObject.active = true;
            }
        }
        text.text = PlayerPrefs.GetInt("TrailCountA").ToString();
    }
}