zoukankan      html  css  js  c++  java
  • MainMenu

    using UnityEngine;
    using System.Collections;
    using System.Xml;
    /// <summary>
    /// 主菜单场景
    /// </summary>
    public class MainMenu : MonoBehaviour {
    	
    	Transform Werewolf;//狼人对象
    	Animation wolfAnimation;//动画组件
    	NavMeshAgent agent;//导航代理
    	float stopDistance;//制动距离
    	bool isNav;//是否开始导航
    	BgMusic bgMusic;//背景音乐管理器
    	string index;//读取存档索引
    	
    	#region 系统设置窗体组件
    	Transform WinSetting;
    	UIPopupList RunModeUI;
    	UISlider SoundEffectsUI;
    	UILabel SoundEffectsLabel;
    	UISlider BgMusicUI;
    	UILabel BgMusicLabel;
    	UICheckbox JumpFontUI;
    	UICheckbox TopInfoUI;
    	UICheckbox WeatherSystemUI;
    	#endregion
    	
    	#region 读取游戏窗体组件
    	Transform WinLoad;
    	Transform savePic;
    	UILabel character;
    	UILabel date;
    	UILabel level;
    	UILabel location;
    	UILabel savenum;
    	UILabel time;
    	#endregion
    	
    	/// <summary>
    	/// 初始化所有组件
    	/// </summary>
    	void Start () {
    		//角色动画组件
    		Werewolf = GameObject.Find("Werewolf").transform;
    		wolfAnimation = Werewolf.animation;
    		wolfAnimation.wrapMode = WrapMode.Loop;
    		//导航组件
    		agent = Werewolf.GetComponent<NavMeshAgent>();
    		stopDistance = agent.stoppingDistance;
    		//背景音乐组件
    		bgMusic = GameObject.Find("MainUI").GetComponent<BgMusic>();
    		BgMusic.PlayMusic("MainMenu");
    		BgMusic.SetVolume(1f);
    		//初始化窗体组件
    		initSetting();
    		initLoadUI();
    	}
    	
    	/// <summary>
    	/// 初始化系统设置窗体组件
    	/// </summary>
    	void initSetting(){
    		WinSetting = GameObject.Find("Win_Setting").transform;
    		RunModeUI = WinSetting.Find("Options/RunMode/Popup List").GetComponent<UIPopupList>();
    		SoundEffectsUI = WinSetting.Find("Options/SoundEffects/Slider").GetComponent<UISlider>();
    		SoundEffectsLabel = WinSetting.Find("Options/SoundEffects/Slider/Label").GetComponent<UILabel>();
    		BgMusicUI = WinSetting.Find("Options/BgMusic/Slider").GetComponent<UISlider>();
    		BgMusicLabel = WinSetting.Find("Options/BgMusic/Slider/Label").GetComponent<UILabel>();
    		JumpFontUI = WinSetting.Find("Options/JumpFont").GetComponent<UICheckbox>();
    		TopInfoUI = WinSetting.Find("Options/TopInfo").GetComponent<UICheckbox>();
    		WeatherSystemUI = WinSetting.Find("Options/WeatherSystem").GetComponent<UICheckbox>();
    		
    		BgMusicUI.sliderValue = 0.5f;
    		SoundEffectsUI.sliderValue = 0.5f;
    		BgMusicLabel.text = (int)(BgMusicUI.sliderValue * 100) + "%";
    		SoundEffectsLabel.text = (int)(SoundEffectsUI.sliderValue * 100) + "%";
    		WinSetting.gameObject.SetActive(false);
    	}
    	
    	/// <summary>
    	/// 初始化读取游戏窗体组件
    	/// </summary>
    	public void initLoadUI(){
    		WinLoad = GameObject.Find("MainUI/Camera/Anchor/Win_Load").transform;
    		savePic = WinLoad.Find("Panel2/SavePic");
    		character = WinLoad.Find("Panel2/Labels/character").GetComponent<UILabel>();
    		date = WinLoad.Find("Panel2/Labels/date").GetComponent<UILabel>();
    		level = WinLoad.Find("Panel2/Labels/level").GetComponent<UILabel>();
    		location = WinLoad.Find("Panel2/Labels/location").GetComponent<UILabel>();
    		savenum = WinLoad.Find("Panel2/Labels/savenum").GetComponent<UILabel>();
    		time = WinLoad.Find("Panel2/Labels/time").GetComponent<UILabel>();
    		WinLoad.gameObject.SetActive(false);
    	}
    	
    	/// <summary>
    	/// 到达摄像机前,播放动画后,开始游戏
    	/// </summary>
    	void Update () {
    		float distance = agent.remainingDistance;
    		if(isNav && distance != 0 && distance <= stopDistance){
    			isNav = false;
    			agent.Stop();
    			wolfAnimation.wrapMode = WrapMode.Once;
    			wolfAnimation.Play("Attack");
    			StartCoroutine(delayStart());
    		}
    	}
    	
    	/// <summary>
    	/// 开始延迟,跳转到角色选择场景
    	/// </summary>
    	IEnumerator delayStart(){
    		yield return new WaitForSeconds(2f);
    		Application.LoadLevel("Character");
    	}
    	
    	#region 主菜单按钮事件
    	/// <summary>
    	/// 开始游戏事件
    	/// </summary>
    	public void StartGame(){
    		wolfAnimation.Play("Walk");
    		Vector3 dest = GameObject.Find("Main Camera").transform.position;
    		agent.SetDestination(dest);
    		isNav = true;
    	}
    	
    	/// <summary>
    	/// 打开系统设置窗体
    	/// </summary>
    	public void OpenSetting(){
    		if(!WinSetting.gameObject.activeSelf){
    			WinLoad.gameObject.SetActive(false);
    			WinSetting.gameObject.SetActive(true);
    		}else{
    			WinSetting.gameObject.SetActive(false);
    		}
    	}
    	
    	/// <summary>
    	/// 打开读取存档窗体
    	/// </summary>
    	public void OpenLoading(){
    		if(!WinLoad.gameObject.activeSelf){
    			WinLoad.gameObject.SetActive(true);
    			WinSetting.gameObject.SetActive(false);
    			clearRecord();
    		}else{
    			WinLoad.gameObject.SetActive(false);
    		}
    	}
    	
    	/// <summary>
    	/// 退出游戏
    	/// </summary>
    	public void ExitGame(){
    		Application.Quit();
    	}
    	#endregion
    	
    	#region 读取记录函数
    	/// <summary>
    	/// 读取存档记录,并显示到UI上
    	/// </summary>
    	void LoadRecord(string index){
    		XmlNodeList recordList = Record.LoadRecord(index);
    		if(recordList != null){
    			this.index = index;
    			string imageName = recordList.Item(1).InnerText;
    			if(imageName != null && imageName.Length > 0){
    				string path = "file://" + Application.dataPath + "/StreamingAssets/Xml/Persistence/Save/" + imageName + ".png";
    				WWW www = new WWW(path);
    				Texture image = www.texture;
    				savePic.renderer.material.mainTexture = image;
    				character.text = recordList.Item(2).InnerText;
    				date.text = recordList.Item(3).InnerText;
    				level.text = recordList.Item(4).InnerText;
    				location.text = recordList.Item(5).InnerText;
    				savenum.text = recordList.Item(6).InnerText;
    				time.text = recordList.Item(7).InnerText;
    			}else{
    				clearRecord();
    			}
    		}
    	}
    	
    	/// <summary>
    	/// 选择记录,加载存档记录
    	/// </summary>
    	public void LoadGame(){
    		if(index != null){
    			Record.RecordName = index;
    			PlayerPrefs.SetString("LevelName","LevelName");
    			Application.LoadLevel("Load");
    		}else{
    			UIMessageBox.ShowMessage("请 选 择 有 效 的 存 档",3f);
    		}
    	}
    	
    	/// <summary>
    	/// 清空UI存档记录
    	/// </summary>
    	public void clearRecord(){
    		savePic.renderer.material.mainTexture = null;
    		character.text = "";
    		date.text = "";
    		level.text = "";
    		location.text = "";
    		savenum.text = "";
    		time.text = "";
    		index = null;
    	}
    	
    	public void LoadRecord1(){LoadRecord("01");}
    	public void LoadRecord2(){LoadRecord("02");}
    	public void LoadRecord3(){LoadRecord("03");}
    	public void LoadRecord4(){LoadRecord("04");}
    	public void LoadRecord5(){LoadRecord("05");}
    	public void LoadRecord6(){LoadRecord("06");}
    	public void LoadRecord7(){LoadRecord("07");}
    	public void LoadRecord8(){LoadRecord("08");}
    	#endregion
    	
    	#region 系统设置函数
    	/// <summary>
    	/// 保存系统设置
    	/// </summary>
    	public void SaveSetting(){
    		Setting setting = new Setting();
    		setting.TopInfoEff = TopInfoUI.isChecked;
    		setting.JumpFontEff = JumpFontUI.isChecked;
    		setting.WeatherEff = WeatherSystemUI.isChecked;
    		setting.Window = (RunModeUI.selection == "Window");
    		setting.BgMusicVolume = BgMusicUI.sliderValue;
    		setting.SoundEffectsVolume = SoundEffectsUI.sliderValue;
    		Persistence.Save("Setting",setting);
    	}
    	
    	/// <summary>
    	/// 设置背景音量
    	/// </summary>
    	public void SetVolumeBg(){
    		if(BgMusicUI){
    			float BgMusicVolume = BgMusicUI.sliderValue;
    			BgMusicLabel.text = (int)(BgMusicVolume * 100) + "%";
    			BgMusic.SetVolume(BgMusicVolume);
    		}
    	}
    	
    	/// <summary>
    	/// 设置音效音量
    	/// </summary>
    	public void SetVolumeEff(){
    		if(SoundEffectsUI)
    			SoundEffectsLabel.text = (int)(SoundEffectsUI.sliderValue * 100) + "%";
    	}
    	#endregion
    }
    

      

  • 相关阅读:
    unicode utf-8 ascll
    解压赋值。django导读,http协议,
    手撸orm
    优酷oneday 元类单例 多路复用
    前后台交互, 按钮, 输入栏,列表,选项 ,dom
    jq 事件;jq选择器,与js转化,jq操作文档,属性,类名,全局变量;获取盒子信息
    事件补充;对象操作;字符串类型操作;数组操作;数字类型操作
    if结构 ,循环结构,数据类型转换,逻辑运算符;三个弹出窗口;计算后样式获取,修改;函数
    js 引入与选择器;对文档修改;数据类型基础语法;计算后样式
    伪类边框,字体图标,显隐,overflow,阴影,二维变形
  • 原文地址:https://www.cnblogs.com/xiao-wei-wei/p/3547349.html
Copyright © 2011-2022 走看看