一新建 GameManager
游戏管理类
采用单例模式
GameManager
游戏管理类
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager gameManager = null; // 单例对象
public SpawnPointUtil spawnPointUtil; // 生成点工具类单例
public CameraManager cameraManager;
void Awake()
{
// 避免重复创建单例
// 如果单例不存在 或 已存在单例不是当前对象
if (gameManager != null && gameManager != this) {
// 销毁当前游戏对象
Destroy(gameObject);
} else {
// 单例对象等于当前对象
gameManager = this;
}
}
void Start()
{
Debug.Log("GameManager");
SetupScene();
}
/// 初始化
public void SetupScene()
{
CreateCharacter();
}
/// 创建角色
public void CreateCharacter()
{
if (spawnPointUtil != null)
{
Debug.Log("CreateCharacter");
GameObject player = spawnPointUtil.CreateObject();
cameraManager.virtualCamera.Follow = player.transform;
}
}
}
二新建 SpawnPointUtil
生成点工具类
SpawnPointUtil
using UnityEngine;
public class SpawnPointUtil : MonoBehaviour
{
public GameObject objectPrefab; // 生成对象预制件
public float interval; // 生成间隔时间
void Start()
{
Debug.Log("SpawnPointUtil");
if (interval > 0)
{
// 在 0.0f 秒后调用 CreateObject 方法,然后每 interval 秒调用一次。
InvokeRepeating("CreateObject", 0.0f, interval);
}
}
/// 创建对象
public GameObject CreateObject()
{
Debug.Log("CreateObject" + objectPrefab.name);
if (objectPrefab != null)
{
return Instantiate(objectPrefab, transform.position, Quaternion.identity);
}
return null;
}
}
三新建 CameraManager
摄像机管理类跟踪玩家
挂载到 Virtual Camera
游戏对象上
using UnityEngine;
using Cinemachine;
public class CameraManager : MonoBehaviour
{
public static CameraManager cameraManager = null;
[HideInInspector]
public CinemachineVirtualCamera virtualCamera;
void Awake()
{
if (cameraManager != null && cameraManager != this)
{
Destroy(gameObject);
}
else
{
cameraManager = this;
}
GameObject virtualCameraObject = GameObject.FindWithTag("VirtualCamera");
virtualCamera = virtualCameraObject.GetComponent<CinemachineVirtualCamera>();
}
}
四 创建预制件
3.1 新建 GameManager
游戏管理预制件
- 创建
空游戏对象
重命名为GameManager
- 挂载 `GameManager 脚本到游戏对象
- 制作
GameManager
预制件 修改属性:
检查器 -> GameManager
spawnPointUtil
:PlayerSpawnPoint
cameraManager
:Virtual Camera
游戏对象3.2 新建
SpawnPointUtil
生成点预制件- 创建
空游戏对象
重命名为SpawnPointUtil
- 挂载
SpawnPointUtil
脚本到游戏对象 - 制作
SpawnPointUtil
预制件
3.3 新建 PlayerSpawnPoint
玩家生成点预制件
- 新建
SpawnPointUtil
预制件实例重命名为PlayerSpawnPoint
检查器 -> SpawnPointUtil -> objectPrefab
:PlayerObject
预制件
3.4 新建 EnemySpawnPoint
敌人生成点预制件
- 新建
SpawnPointUtil
预制件实例重命名为EnemySpawnPoint
检查器 -> SpawnPointUtil -> objectPrefab
:EnemyObject
预制件
幽默外壳包裹严肃内核,寓教于乐。
作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
对权力结构的解构充满勇气与智慧。