using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/// <summary>
/// 读取场景过度页面
/// </summary>
public class LoadSceneProgressbar : MonoBehaviour
{
public static LoadSceneProgressbar _instance;
public GameObject Bg;
public Slider sceneSlider;
public Text SliderText;
public bool isAsyn = true;
public AsyncOperation async = null;
private void Awake()
{
_instance = this;
}
private void Start()
{
//影藏自身
//Bg.SetActive(false);
//文字同步进度
SliderText.text = sceneSlider.value.ToString();
}
private void Update()
{
//进度条等于读取场景的进度
sceneSlider.value += 1f;
//文字同步进度
SliderText.text = sceneSlider.value.ToString() + "%";
}
public void Show()
{
Bg.SetActive(true);
isAsyn = true;
}
}
//关卡选择页自带脚本SceneObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Manoeuvre
{
[RequireComponent(typeof(Button))]
public class SceneObject : MonoBehaviour
{
public Image SceneImage;
public Text SceneNameText;
public Text SceneCountText;
//是否可选
public bool isSelect;
public GameObject Lock;
public GameObject AllStar;
public GameObject[] Star;
public Text NeedStar;
//过度页面
public GameObject GuoDu;
string SceneToLoad;
private void Awake()
{
//查找到进度页面
GuoDu = GameObject.FindGameObjectWithTag("Loading");
}
private void Start()
{
GuoDu.SetActive(false);
//如果是第一个关卡就设为可选
if (SceneCountText.text == 1.ToString())
{
isSelect = true;
}
print(PlayerPrefs.GetInt("totalNum"));
//如果总星星大于所需星星数
if (PlayerPrefs.GetInt("totalNum") >= int.Parse( NeedStar.text))
{
isSelect = true;
}
Show();
}
private void Update()
{
//如果可选就隐藏锁头,显示星星
if (isSelect)
{
Lock.SetActive(false);
AllStar.SetActive(true);
}
}
public void Show()
{
int starsNum = PlayerPrefs.GetInt(SceneCountText.text);
//计算完成的任务获得的星星
for (int i=0; i < starsNum; i++)
{
//防止星星越界
if (i >= Star.Length - 1)
{
break;
}
Star[i].SetActive(true);
}
}
public void Initialize(Sprite _img, string displayName, string sceneName, int Count)
{
SceneToLoad = sceneName;
//set UI
SceneImage.sprite = _img;
SceneNameText.text = displayName;
SceneCountText.text = (Count + 1).ToString();
//解锁需要的星星
NeedStar.text = (Count + 2).ToString();
//add on click listener
GetComponent<Button>().onClick.AddListener(OnSceneObjectClick);
}
void OnSceneObjectClick()
{
//过度页面显示
GuoDu.SetActive(true);
//储存关卡数据名
PlayerPrefs.SetString("nowLevel", SceneCountText.text);
print(PlayerPrefs.GetString("nowLevel", SceneCountText.text));
//delete the saved key
PlayerPrefs.DeleteKey("LastSavedKey");
if (MainMenuFader.Instance)
StartCoroutine(MainMenuFader.Instance.FadeToScene(1f, SceneToLoad));
//play click sound
if (MainMenuAudioManager.Instance)
MainMenuAudioManager.Instance.PlayAudioClip(FindObjectOfType<MainMenuSceneSelection>().ButtonClickSFX);
//stop Audio Manager
if (FindObjectOfType<MainMenuAudioManager>())
FindObjectOfType<MainMenuAudioManager>().DestroyAudioManager();
}
public void OnSceneObjectHover()
{
//play hover sound
if (MainMenuAudioManager.Instance)
MainMenuAudioManager.Instance.PlayAudioClip(FindObjectOfType<MainMenuSceneSelection>().ButtonHoverSFX);
}
}
}