【Unity】一个场景跳转到多个场景的解决方案

2023-11-18

在某些情况下,比如我们需要设计一个探索类游戏,那么一个场景可以根据选择的不同,跳转至多个场景,甚至能够回跳场景,那么在这种情况下,我们该如何进行多场景的精确跳转呢。

思路

假设角色走到某一扇门时,场景将进行切换

如果场景切换是非线性的,那么就要去使用场景的名称来进行精准的切换了,因此把代码写在 角色的身上是不现实的,那将会造成角色身上代码的堆积,所以我们需要将代码挂载到转换的门上面,从而实现不同的门,使用不同代码,加载进不同的场景。

在这里我们假设有角色的脚本 PlayerMove 里面是角色的各种属性等信息。

下面就是门上的代码:我们命名为 DoorScript

具体实现

第一种情况:碰到门直接就到别的场景(简单一些)

private void OnTriggerEnter2D(Collider collision) {
    // 如果门碰到了角色
    if(collision.tag == "Player") {
        // 场景切换
        SceneManager.LoadScene("Scene0");
        // 如果要在这里加一些数据保存的代码也可以
    }
}

第二种情况:碰到门需要按下键盘上的某些按键才能进行场景跳转

// 判断角色是否和门接触的变量
private Bool PlayerIsHere = false;
​
private void Update() {
    // 如果角色在这里,并且按下了E的话
    if (PlayerIsHere && Input.GetKeyDown(KeyCode.E)) {
       // 场景切换
       SceneManager.LoadScene("Scene0");
       // 如果要在这里加一些数据保存的代码也可以
    }
}
​
private void OnTriggerEnter2D(Collider collision) {
    // 如果门碰到了角色
    if (collision.tag == "Player") {
        // UI提示用户按下E实现跳转
        EnterDialog.SetActive(true);
    }
    PlayerIsHere = true;
}
​
private void OnTriggerExit2D(Collider collision) {
    // 如果角色离开了门
    if (collision.tag == "Player") {
        // UI提示用户按下E实现跳转
        EnterDialog.SetActive(false);
    }
    PlayerIsHere = false;
}

第二种情况的难度提升情况:此时我们要在场景切换的时候保存角色的血量,以下是代码

// 实例化角色
private PlayerMove Player;
// 判断角色是否和门接触的变量
private Bool PlayerIsHere = false;
​
private void Update() {
    // 如果角色在这里,并且按下了E的话
    if (PlayerIsHere && Input.GetKeyDown(KeyCode.E)) {
       // 场景切换
       SceneManager.LoadScene("Scene0");
       // 保存角色的血量
       PlayerPrefs.SetInt("Score", Player.blood);//拿取 Player 的 blood(血量)
    }
}
​
private void OnTriggerEnter2D(Collider collision) {
    // 如果门碰到了角色
    if (collision.tag == "Player") {
        // UI提示用户按下E实现跳转
        EnterDialog.SetActive(true);
        // 给player赋值
        Player = collision.gameObject.GetComponent<PlayerMove>();
    }
    PlayerIsHere = true;
}
​
private void OnTriggerExit2D(Collider collision) {
    // 如果角色离开了门
    if (collision.tag == "Player") {
        // UI提示用户按下E实现跳转
        EnterDialog.SetActive(false);
    }
    PlayerIsHere = false;
}

好了以上就是实现!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Unity】一个场景跳转到多个场景的解决方案 的相关文章

  • c#获取cpu序列号

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • unity3d image组件不显示

    需要将UI组件放到画布下面
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发创建操作之玩家信息系统的建立

    游戏一般都需要玩家信息系统 那么我们应该如何搭建玩家信息系统 接下来我将展示一种简单的方法 完整代码如下 using System Collections using System Collections Generic using Uni
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin

随机推荐

  • WinDbg内核调试命令

    1 查看寄存器 r r eax r gdtr 2 查看pcr pcr 3 查看idt表 idt 转载于 https www cnblogs com fanzi2009 archive 2009 05 27 1491144 html
  • 解决git clone后无法找到文件的问题(通过指定地址)

    今天从github上clone了代码 最后出来形如 但是话说我的东西下载到哪里去了呢 摸不着头脑 然后百度之 发现一般会放在命令行对应的路径下 也就是 win R gt cmd 查看命令行地址 然后去此路径下寻找之 果然在这里 那么 如何才
  • C++知识分享: Socket 编程详解,万字长文

    介绍 Socket编程让你沮丧吗 从man pages中很难得到有用的信息吗 你想跟上时代去编Internet相关的程序 但是为你在调用 connect 前的bind 的结构而不知所措 等等 好在我已经将这些事完成了 我将和所有人共享我的知
  • 解决Echarts默认值为NaN问题

    只需要将echarts的下面属性进行修改就可以了 我们可以在下面代码逻辑中添加自己的逻辑 tooltip trigger item formatter function params if params value return param
  • CSS样式中background-position:后的两个值代表什么?

    如果提供了两个值 第一个会决定距离左边缘的偏移 即水平位置 第二个值会决定图片从上边缘向下的偏移 即竖直的位置 例如 background position 5px 10px 则代表 背景图片向左偏移5px 向下偏移 10px
  • [创业-37]:公司的组织架构--所有者与决策机构(股东)

    目录 第1章公司的组织架构 1 1 什么是公司的组织架构 1 2 公司组织架构的类型 第2章 典型的上司公司组织架构 2 1 股东大会 2 2 董事会 2 3 监事会 2 4 总经理 补充 创始人 董事长 CEO 总裁 总经理的区别 第1章
  • PAT2-回形取数

    回形取数 qdulq 40 分 回形取数就是沿矩阵的边取数 若当前方向上无数可取或已经取过 则左转90度 一开始位于矩阵左上角 方向向下 输入格式 输入第一行是两个不超过200的正整数m n 表示矩阵的行和列 接下来m行每行n个整数 表示这
  • CSS 层叠上下文(Stacking Context)

    在网页制作的过程中 元素与元素之间的位置关系 在坐标轴上一般可体现为 X 轴 Y 轴和 Z 轴 对于 X 轴和 Y 轴的定位大多数开发都能比较直观的搞清楚 而 Z 轴 则相对较为模糊 或者说不能全面的理解Z轴的显示逻辑 大多数人都知道可以使
  • springboot 配置文件中属性变量引用方式@@解析

    这种属性应用方式是field name field value 两个 符号是springboot为替代 属性占位符产生 原因是 会被maven处理 所以应该是起不到引用变量的作用 方式可以引用springboot非默认配置文件 即其他配置文
  • 【01】OpenCV模块架构介绍+示例程序演示

    本系列文章是基于Windows下 结合Visual Studio2017和OpenCV4 7进行编写 使用C 代码进行演示 目录 1 OpenCV模块架构 2 示例程序效果展示 2 0创建工程 2 1边缘检测示例edge cpp 2 2K聚
  • 求学在卡梅

    卡内基梅隆大学坐落在美国宾夕法尼亚州匹兹堡市 对于卡梅 我同样慕名已久 清华大学的计算机学科在国内名列前茅 而卡内基梅隆大学计算机学院下属计算机 机器人和语言工程等几个系 和麻省理工 斯坦福 伯克利一起在计算机领域排名第一 1999年8月
  • 纯新手入门机器/深度学习自学指南(附一个月速成方案)

    原作 Masum Hasan问耕 编译整理量子位 出品 公众号 QbitAI 怎么入门机器 深度学习 回答这个问题 最先要考虑的问题是 你有多少时间 准备用三个月入门 和想要一个月速成 肯定是截然不同的路径 当然我建议大家稳扎稳打 至少可以
  • 如何解决K8S节点显示NotReady

    文章目录 kubernetes节点断电重启 kubernetes节点断电重启 背景 运行的好好的k8s集群 某天断电 发现一个节点炸了 显示NotReady kubectl get nodes 那么如何查找问题呢 我们用它 journalc
  • 如何在移动端猎豹浏览器中设置代理IP

    手机浏览器作为一款功能强大且广受欢迎的移动浏览器 提供了丰富的功能和个性化选项 其中包括设置动态ip地址的功能 通过设置动态ip地址 您可以改变您的网络访问路径 保护个人隐私 或者访问被地理限制的内容 接下来 我将为您介绍在手机浏览器中如何
  • Count the string【KMP】

    It is well known that AekdyCoin is good at string problems as well as number theory problems When given a string s we ca
  • 深度学习里面正则化的理解

    一 正则化的概念与用处 正则化 也叫规范化 在神经网络里主要是对代价函数高次项添加一些惩罚 防止其过拟合 相当于对某些特征的权重施加惩罚 降低其影响权重 防止过拟合 欠拟合时需要去掉正则化 因为本来就特征不足 再惩罚一下就更没用了 正则化目
  • JCenter() 与 mavenCenter() 的区别

    网络上有两种Maven仓库 分别是mavenCenter 和jCenter 1 Maven Central 则是由sonatype org维护的Maven仓库 http jcenter bintray com 2 jcenter是一个由 b
  • ARM开发——搭建嵌入式开发环境

    ckermit串口工具的下载 sudo apt get install ckermit 如果我们有新的串口连接上 我们可以通过查看 dev 来看连接的数据 ckermit 配置文件的配置 kermrc set line dev ttyUSB
  • jemter接口测试+断言+参数化+接口关联实战教程

    此次实例准备 jmeter实战接口申请地址 https www tianapi com 实例信息 请求10次身份证归属地查询接口 提取响应数据的星座信息作为请求参数 给星座运势查询接口使用 即接口之间关联调用 下面是两个接口的基本信息 A
  • 【Unity】一个场景跳转到多个场景的解决方案

    在某些情况下 比如我们需要设计一个探索类游戏 那么一个场景可以根据选择的不同 跳转至多个场景 甚至能够回跳场景 那么在这种情况下 我们该如何进行多场景的精确跳转呢 思路 假设角色走到某一扇门时 场景将进行切换 如果场景切换是非线性的 那么就