作業內容
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;
}
}
}
實現單例模式最主要的思想是:
- 構造函數是私有的;
- 私有靜態變量存放單一實例;
- 公有靜態函數獲得該實例,如有需要則創建。
使用上面的模板,就可以創建任何一個類的單一實例了。調用方法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中更改飛碟的顏色,大小,擊落分數了: