热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

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

这篇文章主要介绍了unity切换场景不销毁物体问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在用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());
    }
    void DestroyObjectDelayed()
    {
        // 5秒后销毁当前gameobject
        Destroy(gameObject, 5);
    }
    // 当用户按下Ctr键后,将会从gameobject上移除boxcollider脚本
    void Update()
    {
        if (Input.GetButton("Fire1") && GetComponent())
        {
            Destroy(GetComponent());
        }
    }
}

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

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


推荐阅读
  • 本文介绍如何通过修改 Windows Vista 的注册表来全面禁用控制面板,以及如何针对性地隐藏或显示特定的控制面板项目,以增强系统安全性。 ... [详细]
  • 掌握数据库引擎存储过程与系统视图查询:DBA与BI开发者的必备技能
    本文介绍了如何利用数据库引擎存储过程及系统视图查询数据库结构和对象信息,为数据库管理员(DBA)和商业智能(BI)开发人员提供实用的基础知识。文章涵盖了一系列常用的SQL Server存储过程和系统视图,帮助读者快速获取数据库的相关信息。 ... [详细]
  • 本文详细介绍了如何设置局域网,并确保网络中的所有计算机能够相互访问和共享安装的软件。包括物理连接检查、TCP/IP设置、网络协议配置等多个方面。 ... [详细]
  • 本文深入探讨了在安装PostgreSQL数据库系统时,执行Configure、Make及Make Install命令的具体含义与作用。 ... [详细]
  • 这篇博文介绍使用命令行参数的编程方法,载体是用于文件复制的程序。这也是我用Markdown编辑器写的第一篇博文。Markdown在写《逆袭大学》时用过,写博文是第一次。本文正文:引子 ... [详细]
  • 本文介绍了如何通过安装 VirtualBox 和 Vagrant 来快速搭建和管理虚拟机环境。我们将详细探讨如何选择合适的 Box 镜像,以及如何高效地下载、添加和管理这些镜像。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • Python3兼容性提升:Robot Framework与RIDE的最新进展
    本文介绍了Robot Framework,一个基于Python的自动化测试框架,以及其配套IDE RIDE的最新更新。随着Python3的广泛采用,RIDE终于实现了对Python3的支持,这为Robot Framework的用户带来了福音。 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • 本文详细介绍了如何在Unity中使用贝塞尔曲线来实现物体的平滑移动。通过定义一个辅助工具类和一个移动控制类,可以轻松地让物体沿着预设的贝塞尔曲线路径移动。 ... [详细]
  • 本文将指导您使用FastStone软件轻松完成网页或应用的滚动截屏,适用于多种设备和操作系统。 ... [详细]
  • OpenSesame for Mac: AE项目格式高效编辑工具
    OpenSesame for Mac 是一款强大的插件,专为After Effects设计,能够帮助用户创建向后兼容的AE项目,或将项目中的特定部分导出至文本、素材、属性值及渲染队列项等,便于在电子表格中进行编辑。 ... [详细]
  • 本文详细介绍了几种方法,帮助用户将非标准的mmddyy日期文本转换成Excel中的标准日期格式(mm/dd/yyyy)。这些方法包括使用公式、分列功能以及VBA宏,适用于Excel 2013及更高版本。 ... [详细]
  • grep、sed、awk一、grep的用法1、grep简介grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep包 ... [详细]
  • Xcode 快捷键与实用技巧
    在iOS开发过程中,熟练掌握Xcode的快捷键可以显著提升工作效率,减少不必要的鼠标操作,让开发者更加专注于代码编写。本文将介绍一些常用的Xcode快捷键及技巧,帮助开发者提高开发效率。 ... [详细]
author-avatar
实事求是2502932297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有