返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >unity 切换场景不销毁物体问题的解决
  • 797
分享到

unity 切换场景不销毁物体问题的解决

2024-04-02 19:04:59 797人浏览 泡泡鱼
摘要

在用Unity进行游戏开发时我们有时需要一些物体在场景切换时不需要被销毁这时我们可以用官方给的DontDestroyOnLoad()方法, 这个方法可以让我们在场景切换时不销毁场景。

在用Unity进行游戏开发时我们有时需要一些物体在场景切换时不需要被销毁这时我们可以用官方给的DontDestroyOnLoad()方法,

这个方法可以让我们在场景切换时不销毁场景。但如果你又返回这个场景(创建不可销毁物体的场景)时就会发现会有两个这个物体(标记为不可销毁的物体)。

这个问题有一个较为简单的解决方法就是:

在物体的Awake()或Star()方法中加入这段代码。如果找到和自己一样的名字却不是自己的物体就将自己销毁,这样就解决了这个问题。(别的地方不知道,我的项目是可以用);


if (GameObject.Find("Players").gameObject != this.gameObject)
            Destroy(this.gameObject);

补充:Unity加载场景、计时器、加载时不销毁某物体

异步加载场景,SceneManager.LoadSceneAsync(SceneName);需引用 using UnityEngine.SceneManagement;命名空间,

Application.LoadLevel这个方法不再适用;

可以用协同程序做一个简单的计时器,详见代码;

DontDestroyOnLoad (this.gameObject);方法可以在加载场景时不销毁指定物体;


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Base : MonoBehaviour {    
    public virtual void ScenesLoad(string SceneName,int AfterSomeMinutesToLoad)
    {
       StartCoroutine (Calculagraph(SceneName,AfterSomeMinutesToLoad));
   }
   IEnumerator Calculagraph(string SceneName,int AfterSomeMinutesToLoad)
   {
       yield return new WaitForSeconds (AfterSomeMinutesToLoad*60);
       DontDestroyOnLoad (this.gameObject);
       SceneManager.LoadSceneAsync(SceneName);
   }
}

补充:Unity小技巧——延时销毁GameObject

当我们希望延迟一段时间销毁GameObject,Component,或者 asset 的时候可以利用下面的函数来实现。

不用自己再去实现延迟计时操作。


Destroy(Object obj, float t = 0.0F);

第二个参数单位为秒,物体将在t秒后被销毁。


using UnityEngine;
public class ScriptExample : MonoBehaviour
{
    void DestroyGameObject()
    {
        Destroy(gameObject);
    }
    void DestroyScriptInstance()
    {
        // 立刻从gameobject上移除该脚本
        Destroy(this);
    }
    void DestroyComponent()
    {
        // 从gameobject上移除rigidbody脚本
        Destroy(GetComponent<Rigidbody>());
    }
    void DestroyObjectDelayed()
    {
        // 5秒后销毁当前gameobject
        Destroy(gameObject, 5);
    }
    // 当用户按下Ctr键后,将会从gameobject上移除boxcollider脚本
    void Update()
    {
        if (Input.GetButton("Fire1") && GetComponent<BoxCollider>())
        {
            Destroy(GetComponent<BoxCollider>());
        }
    }
}

在做编辑器扩展开发的时候,非运行时环境,只能使用 Object.DestroyImmediate()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

--结束END--

本文标题: unity 切换场景不销毁物体问题的解决

本文链接: https://lsjlt.com/news/123496.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • unity 切换场景不销毁物体问题的解决
    在用unity进行游戏开发时我们有时需要一些物体在场景切换时不需要被销毁这时我们可以用官方给的DontDestroyOnLoad()方法, 这个方法可以让我们在场景切换时不销毁场景。...
    99+
    2024-04-02
  • 使用vue-router切换组件时使组件不销毁问题
    目录vue-router切换组件时使组件不销毁1、用keep-alive包裹router-view2、定义路由meta字段3、keep-alive的原理vue-router路由切换 ...
    99+
    2024-04-02
  • 如何解决切换SkyDrive账户找不到注销选项的问题
    这期内容当中小编将会给大家带来有关如何解决切换SkyDrive账户找不到注销选项的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SkyDrive是win8系统的自带应用,可以帮我们云端存储一些文件和w...
    99+
    2023-06-14
  • Android 白天黑夜模式切换适配及引起的Activity销毁重启解决
    目录 一、白夜模式切换,Activity销毁重启解决: 二、 暗黑模式适配  1. 添加依赖:   2. 复制下面工具类方法直接使用即可: 3.资源适配:  4. 适配回调: 5.切换白夜模式注意事项: 一、白夜模式切换,Activi...
    99+
    2023-09-25
    android java 开发语言
  • 解决springboot环境切换失效的问题
    目录springboot环境切换失效概述解决SpringBoot多数据源切换无效(不切换)CSDN查到的方案有springboot环境切换失效 概述 最近在使用-Dspring.pr...
    99+
    2024-04-02
  • 如何解决VNC访问时不能切换SCIM输入法的问题
    本篇内容介绍了“如何解决VNC访问时不能切换SCIM输入法的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用VNC View远程访问L...
    99+
    2023-06-10
  • mybatis-plus动态数据源切换不生效的问题解决
    一、问题描述 在我们项目中,既要连接mysql,又要连接TDEngine(taos),正确配置后也无法动态切换数据源执行sql 二、环境 1.依赖 com.ta...
    99+
    2023-09-09
    mybatis mysql java
  • 解决mybatis-plus动态数据源切换不生效的问题
    目录一、问题描述二、环境1.依赖2.配置三、解决方法四、测试五、问题分析一、问题描述 在我们项目中,既要连接mysql,又要连接TDEngine(taos),正确配置后也无法动态切换...
    99+
    2023-01-11
    mybatis-plus动态数据源切换 mybatis-plus动态数据源
  • 怎么解决DG切换完后节点起不来问题
    这篇文章主要讲解了“怎么解决DG切换完后节点起不来问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决DG切换完后节点起不来问题”吧! &n...
    99+
    2024-04-02
  • 切换SkyDrive账户找不到注销选项的解决方法
    SkyDrive是win8系统的自带应用,可以帮我们云端存储一些文件和win8的系统配置,和苹果的icloud有异曲同工之妙。有的朋友因为嫌弃免费的存储空间太小,又不想花钱扩容,于是就多注册了几个SkyDr...
    99+
    2022-06-04
    找不到 解决方法 账户
  • 解决redis sentinel 频繁主备切换的问题
    问题描述操作redis发现原有Master变成slave,其他slave成master,切换较频繁问题分析查看redis服务器sentinel日志,发现主机频繁在凌晨左右sentin...
    99+
    2024-04-02
  • 解决spring boot环境切换失效的问题
    目录spring boot环境切换失效概述解决springboot多环境配置文件无效springboot配置文件无效spring boot环境切换失效 概述 最近在使用-Dsprin...
    99+
    2024-04-02
  • AntDesign中使用css切换的问题及解决
    目录Ant Design使用css切换问题1、绑定一个自定义属性2、css模块化3、Ant Design主题方案4、css in js ant design中css样式覆盖...
    99+
    2024-04-02
  • fastjson转换对象实体@JsonProperty不生效问题及解决
    目录fastjson转换对象实体@JsonProperty不生效项目场景问题描述原因分析解决方案@JsonProperty 失效问题的排查fastjson转换对象实体@JsonPro...
    99+
    2024-04-02
  • 如何解决微信小程序入口场景的问题
    这篇文章主要为大家展示了“如何解决微信小程序入口场景的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决微信小程序入口场景的问题”这篇文章吧。前言最近一...
    99+
    2024-04-02
  • pytorch网络模型构建场景的问题如何解决
    今天小编给大家分享一下pytorch网络模型构建场景的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。网络模型构建...
    99+
    2023-07-05
  • Ubuntu 16.04无法切换root权限问题的解决
    发现问题 在su root时发现无法切换到root权限.显示: /usr/local/bin/zsh 没有文件或目录 想了想问题所在,突然想起来前段时间想要更换shell主题,于是装了zsh和oh-my-zsh,用了一段...
    99+
    2022-06-04
    ubuntu无法切换到root ubuntu root权限 ubuntu 设置root权限
  • 如何解决xp系统文字输入法不可切换的问题
    这篇文章主要讲解了“如何解决xp系统文字输入法不可切换的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决xp系统文字输入法不可切换的问题”吧!  Windows XP中,输入法图标...
    99+
    2023-06-13
  • 如何解决XP系统注销的菜单里面没有用户切换按钮的问题
    这期内容当中小编将会给大家带来有关如何解决XP系统注销的菜单里面没有用户切换按钮的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。问:在Windows XP系统下,单击“开始”菜单&rarr;“...
    99+
    2023-06-14
  • Win8.1桌面背景自动切换不断变化的解决方法
    随着微软正式停止XP系统服务,不少用户将电脑系统升级到了最新的Win8.1版本,不过不少细心的网友会发现,Win8.1桌面壁纸默认是自动切换的,也就是说,Win8.1桌面背景壁纸会不断的变化,尽管个人觉得很个性,不过会比...
    99+
    2023-06-04
    Win8.1 桌面背景 自动切换 解决 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作