unity学习阶段笔记

来源:互联网 发布:pl sql developer下载 编辑:程序博客网 时间:2024/06/07 14:38
很少写博客呢,严肃的说来,这还是我第一篇博客呢。上个星期天开始学习unity,找了siki大神的拾荒者游戏例子一步步做从生成场景到建立player,enemy。然后给角色们加上各种动画,设定游戏结束的判定,进行ui的显示。到最后终于给整个游戏加上不同的音效,感觉自己萌萌哒。但是通过学习发现作为一个学生,我对c#了解的还很不足够。很多代码的意思根本看不懂或者说理解的很模糊。比如在GameManage脚本里(此脚本用于控制游戏的关卡载入,角色状态和UI设置)。关于instance这个实例(?)干什么用的还是搞不清楚。
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEngine.UI;public class GameManager : MonoBehaviour {    public static GameManager _instance;    public static GameManager instance{        get {            return _instance;                    }    }    public int level = 1;//当前游戏关卡    public int food = 100;      [HideInInspector]public List<enemy> enemylist= new List<enemy>();    [HideInInspector]public bool isEnd = false;//是否到达终点    private bool sleepstep = true;    private Text foodText;    public Text failText;    private playercontroller player;    private MapManager mapManager;    private Image dayimage;    private Text daytext;    void Awake() {        _instance = this;        DontDestroyOnLoad(gameObject);        InitGame();    }    void InitGame()    {        //初始化        mapManager = GetComponent<MapManager>();        mapManager.Initmap();        //初始化ui        foodText = GameObject.Find("foodText").GetComponent<Text>();        UpdateFoodText(0);        failText = GameObject.Find("failText").GetComponent<Text>();        failText.enabled = false;        player = GameObject.FindGameObjectWithTag("Player").GetComponent<playercontroller>();        dayimage = GameObject.Find("DayImage").GetComponent<Image>();        daytext = GameObject.Find("DayText").GetComponent<Text>();        daytext.text = "Day " + level;        Invoke("HideBlack", 1);        //初始化参数                isEnd = false;        enemylist.Clear();    }    void UpdateFoodText(int foodChage) {        if (foodChage == 0)        {            foodText.text = "Food:" + food;        }        else        {            string str = "";            if (foodChage < 0)            {                str = foodChage.ToString();            }            else {                str = "+" + foodChage;                        }            foodText.text = str + " Food:" + food;                }        }// Update is called once per framevoid Update () {}    public void reducefood(int count) {        food -=count;        UpdateFoodText(-count);    }    public void addfood(int count) {        food += count;        UpdateFoodText(count);    }    public void onplayermove() {        if (sleepstep == true)        {            sleepstep = false;        }        else {            foreach (var enemy in enemylist)            {                enemy.Move();            }            sleepstep = true;        }        //检测有没有终点        if (player.TargetPos.x==mapManager.cols-2&&player.TargetPos.y==mapManager.rows-2){            isEnd = true;            Application.LoadLevel(Application.loadedLevel);//加载下一个关卡;        }    }    void OnLevelWasLoaded(int scenelevel) {        level++;        InitGame();//初始化游戏操作    }    void HideBlack() {        dayimage.gameObject.SetActive(false);        }}
其他的倒还好,在对unity中的动画,模型,刚体进行操作之前要先getComponent,但是音效和bgm的播放就需要先定义audiosource,然后再.play就可以进行播放。总之。。。好像也没什么好说的。以后慢慢来吧。
0 0
原创粉丝点击