一新建 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预制件


幽默外壳包裹严肃内核,寓教于乐。
作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
对权力结构的解构充满勇气与智慧。