3D遊戲編程與設計第四次作業

作業內容

1.編寫一個簡單的鼠標打飛碟(Hit UFO)遊戲

這次的作業最重要的是單例模式和工廠模式。

單例模式:確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱爲單例類,它提供全局訪問的方法。是對象創建型模式。

模板如下:

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

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
    protected static T instance;
    public static T Instance
    {
        get
        {
            if (instance == null)
            {
                instance = (T)FindObjectOfType(typeof(T));
                if (instance == null)
                {
                    Debug.LogError("An instance of " + typeof(T)
                        + " is needed in the scene, but there is none.");
                }
            }
            return instance;
        }
    }
}

實現單例模式最主要的思想是:

  1. 構造函數是私有的;
  2. 私有靜態變量存放單一實例;
  3. 公有靜態函數獲得該實例,如有需要則創建。

使用上面的模板,就可以創建任何一個類的單一實例了。調用方法className test = Singleton<className>.Instance

工廠模式:定義了一個用於創建對象的接口,讓子類決定實例化哪一個類。使一個類的實例化延遲到子類。是對象創建型模式。

而在該遊戲中表現的是,根據當前是第幾Round,決定哪些飛碟可以出現。而作業還要求該工程是具有緩存作用的。緩存的作用表現在可以減少遊戲對象的創建和摧毀,減少開銷。

項目傳送門

2.編寫一個簡單的自定義 Component (選做)

編輯器代碼:

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

public class DiskData : MonoBehaviour
{
    public int score = 1;                               //射擊此飛碟得分
    public Color color = Color.white;                   //飛碟顏色
    public Vector3 direction;                           //飛碟初始的位置
    public Vector3 scale = new Vector3(1, 1, 1);   //飛碟大小
}

把這一個c#文件拖到做好的飛碟中,然後就可以在Inspector中更改飛碟的顏色,大小,擊落分數了:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章