我们打开上一篇40播放动画时禁止点击移动的项目,
本章要做的事情是搭建一个资源加载框架,让UI界面,人物模型以及场景都存放在资源文件夹中在运行时加载出来
首先在资源商店加载资源
将怪物模型放置场景中
将普通管线模型切换成URP
重命名为Boss01放在资源文件夹里
新建Boss01对象的动画控制器
进行设置
拖拽新建动画控制器
将场景资源放进资源文件夹中后在场景中隐藏
将场景中的界面Canvas放进资源文件夹中后隐藏
接着把以前挂载在Land场景中的文件夹挂载的LoadResourcesRun.cs脚本取消挂载
新建脚本:
编写脚本:
using UnityEngine;
public class GameStart : SingletonMono<GameStart>{
protected override void Awake(){
EnterGame();
}
public void EnterGame() {
EnterFightScene();
}
public void EnterFightScene() {
GameObject mapPrefab = Resources.Load<GameObject>("Prefabs/Maps/Land");
GameObject map = Instantiate(mapPrefab);
map.AddComponent<GameManager>().InitGame();
UIManager.Instance.ShowUIView("Canvas");
}
}
打开GameManager.cs脚本
using System.Collections.Generic;
using UnityEngine;
public class GameManager : GameRoot{
[HideInInspector]
public InfoSystem infoSys;
#region 41资源框架
public GameObject player = null;
public List<GameObject> monsters = new List<GameObject>();
#endregion
protected override void Awake(){
infoSys = gameObject.AddComponent<InfoSystem>();
infoSys.Init();
}
#region 41资源框架
public void InitGame(){
//后续放任务系对话Npc
//TODO
//放我们的角色
GameObject playerPrefab = Resources.Load<GameObject>("Prefabs/Players/PlayerNormal");
GameObject player = Instantiate(playerPrefab, new Vector3(-18f, 43, 0f), Quaternion.identity);
player.name = "PlayerNormal";
//end
//放我们的怪物
GameObject loadedMonsterKing = Resources.Load<GameObject>("Prefabs/Monsters/Boss01");
GameObject boss01 = Instantiate(loadedMonsterKing, new Vector3(0f, 45, 0f), Quaternion.identity);
boss01.name = "Boss01";
monsters.Add(boss01);
//end
}
#endregion
}
保存后运行项目
本章做了重构资源加载框架 后续按照框架的思想继续制作项目
下篇文章的内容:
1.Boss的有限状态机
2.窗口可拖拽脚本
3.点击名称寻找地点功能
4.隐藏怪物的生成
5.怪物I攻击范围内的主动攻击
6.掉落坐骑蛋的获取
7.异步传送转换场景
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》
【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6