Unity场景转换——麦叔《迷失岛2》游戏框架

——水平有限,仅个人记录,出现错误也难免
场景层级
这种场景处理方式我感觉可以用在很多项目中,本文主要还是记录这种优秀的场景处理方法
Persistent:主场景:
控制类脚本存放位置(需要持久化出现在场景,不会因为场景切换造成丢失(虽然可以DontDestroyOnLoad,但是一个不方便,不便拓展;一个是不能保证加载顺序正确(个人理解))包括像Canvas下的panel的切换,TransintionManager,CurSorManager检测特定tag的碰撞体(当然也不限于此功能,包括切换鼠标sprite等)都可以放在主场景中。
H1、H2场景间切换


注意点
导入MTool.dll:防止用string类出现在场景中未设置或设置错误的情况
注意加入CanvasgGroup的时候,当alpha为0时设置Block Raycasts为false(代码实现),防止遮挡鼠标点击
先将脚本TransintionManager挂载,然后修改为单例模式

UnityEngine.dll里的Singleton<T>
当脚本实例被加载时会调用Awake函数;Awake函数在所有的游戏对象被初始化完毕之后才会被调用;在脚本实例的整个生命周期中,Awake函数仅执行一次。Awake函数的执行与否与脚本实例的状态(启用或禁用)并没有关系,而是与脚本实例所绑定的游戏对象的状态有关。
TransintionManager继承Unity自带的Singleton<TransitionManage>要是不先挂在对象上,也不会自动生成实例
自己写单例模板:(可自动生成,无需挂载)
注释掉需要实例化的字段和代码部分:也能运行实现场景切换但是暂时觉得这种实现拓展性太差

代码展示
具体代码解释参考原视频,我也只是稍微总结了一下。原视频链接:
【《迷失岛2》游戏框架开发01:实现场景转换|Unity教程】 https://www.bilibili.com/video/BV19a411i7Tw/?share_source=copy_web&vd_source=1a4aca8365c4306cd29bfe65b5aa448a

CurSorManager鼠标点击管理
TransitionManager类
Teleport 类

这个需要挂载在每个场景里,注意Tag设置