Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >统一:如何切换场景,当返回原场景时,玩家返回他们的场景切换的地方。

统一:如何切换场景,当返回原场景时,玩家返回他们的场景切换的地方。
EN

Stack Overflow用户
提问于 2020-10-06 21:19:03
回答 1查看 1.8K关注 0票数 0

我有两个场景:主街和建筑场景,当玩家是主街时,如果玩家的触发盒触摸到大楼,玩家按下"q“键,场景就会切换到建筑场景。我想这样,当玩家离开建筑场景并返回到主街场景时,玩家回到了他们进入建筑场景的位置。如果这没有意义的话,请提前道歉。

sceneSwitchingScript:

代码语言:javascript
运行
AI代码解释
复制
    public int buildingToLoad;
    public Text InputText;
    public movement player;
    public Vector3 playerPrevPos;

    void OnTriggerEnter2D(Collider2D col){
        if(col.CompareTag("Player")){
            InputText.text = ("[Q] to enter");
            if(Input.GetKeyDown("q")){
                if (gameObject.tag == "EntryPoint"){
                    playerPrevPos = new Vector3(player.transform.position.x, player.transform.position.y, player.transform.position.z);
                }
                //Debug.Log(gameObject.tag);
                Application.LoadLevel(buildingToLoad);  
            }
            
        }
    }

    void OnTriggerStay2D(Collider2D col){
        if(col.CompareTag("Player")){
            if(Input.GetKeyDown("q")){
                //spawn = new Vector3(player.transform.position.x, player.transform.position.y, player.transform.position.z)
                Application.LoadLevel(buildingToLoad);
                if (gameObject.tag == "EntryPoint"){
                    playerPrevPos = new Vector3(player.transform.position.x, player.transform.position.y, player.transform.position.z);
                }
            }
        }
    }

    void OnTriggerExit2D(Collider2D col){
        if(col.CompareTag("Player")){
            InputText.text = ("");
        }
    }

当玩家离开大楼时,设置玩家的位置

代码语言:javascript
运行
AI代码解释
复制
public switchScene ss;
void OnTriggerStay2D(Collider2D col){
        if(Input.GetKeyDown("q")){
            if(col.gameObject.CompareTag("ExitPoint")){
                transform.position = ss.playerPrevPos;
            }       
        }
    }

然而,这两张纸片不起作用,我不确定这是否相关,但是当我让玩家在游戏中切换场景时,会弹出这个错误:

NullReferenceException:对象引用未设置为对象movement.OnTriggerStay2D (UnityEngine.Collider2D col)的实例

此错误消息提到了该行上的错误:

代码语言:javascript
运行
AI代码解释
复制
transform.position = ss.playerPrevPos;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 21:35:17

有了统一,传统的场景加载是相当破坏性的。通过将GameObject设置为DontDestroyOnLoad,可以将其设置为安全,这在某种程度上将对象从场景中移除,从而使其免受场景负载的影响。

统一最终正确地实现了多场景编辑和加载。本质上是DDOL,但做得很好。

现在,您实际上可以同时加载多个场景。现在,允许您做的是拥有一个"Manager“场景,它处理场景之间常见的所有对象,并且只加载(和卸载)该单独场景所需的特定对象。

你会像这样使用它:

代码语言:javascript
运行
AI代码解释
复制
SceneManager.LoadScene("YourScene", LoadSceneMode.Additive);

除了当前加载的场景之外,它还将加载"YourScene“。同样,移除场景是:

代码语言:javascript
运行
AI代码解释
复制
SceneManager.UnloadScene("YourScene");

现在,如果您有一个Manager场景,您可以在您的经理场景中包含一个脚本,该脚本保存每个单独场景的数据。作为一个讨厌的例子,您可能有:

代码语言:javascript
运行
AI代码解释
复制
public Vector3 InsideSceneLastPosition { get; set; }

然后在加载外部场景之前将其分配给它。当您再次加载您的内部场景时,您可以再次读取InsideSceneLastPosition来重新定位您的角色。

下面是链接到统一处的LoadSceneAsync页面。

不仅如此,您还必须侦听SceneManager.sceneLoaded事件,以了解何时实际加载了下一个场景,以便重新定位GameObejcts。您可以找到有关该这里的信息。

您可以看到多场景编辑我的简单拖动多个场景从项目窗口到您的层次结构窗口。列出的所有场景都将加在一起。但是你必须小心,因为有另一个“抓到”,因为你不能引用对象从一个场景到另一个场景。您可以调用脚本跨场景,但您将无法将游戏对象从一个场景中拖到另一个场景中组件的对象字段中。别担心,你会明白的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64237669

复制
相关文章
【Android Gradle 插件】自定义 Gradle 插件模块 ④ ( META-INF 中声明自定义插件的核心类 | 在应用中依赖本地 Maven 仓库中的自定义 Gradle 插件 )
参考 Android Gradle 插件内容 , 将 Android Studio 的 Project 面板中的 External Libraries 展开 ,
韩曙亮
2023/03/30
1.6K0
【Android Gradle 插件】自定义 Gradle 插件模块 ④ ( META-INF 中声明自定义插件的核心类 | 在应用中依赖本地 Maven 仓库中的自定义 Gradle 插件 )
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
在 Android Studio 工程的根目录的 buildSrc 模块下的 src/main/groovy 代码 , 自动引入了 Groovy , Gradle , Java 依赖库 , 可以直接调用上述 API ;
韩曙亮
2023/03/30
1K0
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
【Android Gradle 插件】Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )
选择 " 菜单栏 / File / New / New Project… " 选项 ,
韩曙亮
2023/03/30
1.8K0
【Android Gradle 插件】Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件中获定义方法 | 在插件中创建 Gradle 任务 | 代码示例 )
在 自定义 Gradle 插件 的 Extension 扩展 中 , 可以定义方法 , 定义的方法可以带参数 , 也可以不带参数 ;
韩曙亮
2023/03/30
1.8K0
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件中获定义方法 | 在插件中创建 Gradle 任务 | 代码示例 )
android gradle command not found在Mac中
这个问题是在命令行中使用gradle命令不存在 只需要找到本地的gradle然后加到.zshrc文件中
tea9
2022/07/16
1.1K0
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )
在 buildSrc 模块 中的 src/main/groovy 目录 下 , 创建 MyPlugin.groovy 代码文件 作为插件的主要代码 , 代码如下 :
韩曙亮
2023/03/30
5380
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 的 扩展 Extension , 在 Module 模块下的 build.gradle 构建脚本中 , android 配置块 就是一个 AppExtension 扩展 , 但是在 android 扩展下又定义了 defaultConfig 扩展 , 这是一个 ProductFlavor 配置 ;
韩曙亮
2023/03/30
2.1K0
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )
Android apk中so库文件未压缩
升级AS 3.6.1, 并且升级project build.gradle AGP 到3.6.1, 一个项目发现打包后文件骤然增大, 查看apk包,发现apk 包中so库文件未被压缩. 但是一个类似项目,相同版本却没有问题
全栈程序员站长
2022/07/02
1.3K0
Android apk中so库文件未压缩
【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ③ ( 在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 )
在上一篇博客 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 ) 最后提到了 在 Gradle 构建脚本中 , 需要实现 依赖库模块 / 应用模块 切换设置 , 主要涉及如下两个方面 :
韩曙亮
2023/03/30
2.2K0
【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ③ ( 在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 )
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ① ( buildSrc 目录中实现 Gradle 插件 | 创建 src/main/groovy 源码目录并编译 )
创建 Gradle 插件 , 一般是在 Android Studio 或者 IntelliJ IDEA 中 , 创建一个插件模块 , 这里以 AS 中为例 ;
韩曙亮
2023/03/30
1.6K0
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ① ( buildSrc 目录中实现 Gradle 插件 | 创建 src/main/groovy 源码目录并编译 )
【Android Gradle 插件】自定义 Gradle 插件模块 ① ( 在 Module 模块中自定义 Gradle 插件 | 创建自定义插件类型模块 | 手动导入相关依赖 )
在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 ) 中 , 总结了在 Android Studio 工程中 自定义 Gradle 插件 , 并在 build.gradle 构建脚本 中导入插件的代码 ;
韩曙亮
2023/03/30
2.2K0
【Android Gradle 插件】自定义 Gradle 插件模块 ① ( 在 Module 模块中自定义 Gradle 插件 | 创建自定义插件类型模块 | 手动导入相关依赖 )
Android – 在Gradle中更改APK文件名
默认情况下,Android Studio中的Gradle构建命名为.apk文件app-release.apk。对应用程序build.gradle文件进行了一些小的更改,可以将.apk名称更改为<app name>-release-<version>.apk。 需要在app的目录下面修改build.gradle文件。 第一步是将project.archivesBaseName设置为您的应用程序名称。 android { compileSdkVersion 25 buildToolsVersio
code_horse
2018/07/02
3K0
【Android Gradle 插件】自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )
在插件模块中的 src/main 目录 下创建 groovy 目录 , 用于存放 Groovy 代码 , 在其中定义包名以及包名下的源码 :
韩曙亮
2023/03/30
1.8K0
【Android Gradle 插件】自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )
【Android Gradle 插件】自定义 Gradle 任务 ⑩ ( 自定义任务类继承 DefaultTask 类 | TaskContainer#create 函数创建任务 | 生成自定义任务)
Gradle 任务就是一个 Task 类 , 在 Gradle 脚本中 , 可以 自定义 Task 类 ,
韩曙亮
2023/03/30
8880
【Android Gradle 插件】自定义 Gradle 任务 ⑩ ( 自定义任务类继承 DefaultTask 类 | TaskContainer#create 函数创建任务 | 生成自定义任务)
【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
在 Gradle 自定义插件 Plugin 中 , 如果要执行复杂的工作 , 可以在 实现的 Plugin 接口的 apply 函数中执行 ;
韩曙亮
2023/03/30
1K0
Android中Gradle使用
Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
海哥@开发
2022/04/06
8690
Android中Gradle使用
Android Studio 自定义Gradle插件
之前写了一个Android中的AOP框架Cooker.这里总结一下里面用到的两块小知识:
乱码三千
2021/07/29
8770
Android Studio 自定义Gradle插件
Gradle For Android(9)--自定义构建
现在我们知道了Gradle如何工作,如何创建自己的Task以及Plugin,如何执行test任务,如何设置CI。这一章会包含一些小技巧,接下来会从以下Topic进行讨论:
None_Ling
2018/10/24
7250
Gradle For Android(9)--自定义构建
【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
Android Plugin DSL Reference 参考文档 : https://google.github.io/android-gradle-dsl/2.3/
韩曙亮
2023/03/30
6260
【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
点击加载更多

相似问题

Android Gradle 3.0和本地库的“未解析引用R”

11

android项目中未解析android项目库中的类

21

Android Studio Gradle依赖项未解析

13

Android Gradle --在gradle中实现Apache时未能解决错误

325

Gradle未能解析Android中的库

127
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档