EASY Manoeuvre FPS使用 (十四) 关卡是否可选逻辑脚本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);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值