4.1.1 DontSave:保留对象到新场景

功能说明:此属性的功能是用来设置是否将Object对象保留到新的场景(Scene)中,如果使用HideFlags.DontSave,则Object对象将在新场景中被保留下来,对其使用说明如下。

(1)如果GameObject对象被HideFlags.DontSave标识,则在新scene中GameObject的所有组件将被保留下来,但其子类GameObject对象不会被保留到新scene中。

(2)不可以对GameObject对象的某个组件如Transform进行HideFlags.DontSave标识,否则无效。

(3)即使程序已经退出,被HideFlags.DontSave标识的对象会一直存在于程序中,造成内存泄漏,对HideFlags.DontSave标识的对象在不需要或程序退出时需要使用DestroyImmediate手动销毁。

实例演示:下面通过实例演示属性DontSave的使用。

本实例工程包含两个场景,下面是场景DontSave_unity中的脚本代码:

using UnityEngine;
using System.Collections;public class DontSave_ts : MonoBehaviour {public GameObject go;public Transform t;void Start(){//GameObject对象使用HideFlags.DontSave可以在新scene中被保留go.hideFlags = HideFlags.DontSave;GameObject Pl = GameObject.CreatePrimitive(PrimitiveType.Plane);Pl.hideFlags = HideFlags.DontSave;//不可以对GameObject的组件设置HideFlags.DontSave,否则无效Transform tf = Instantiate(t, go.transform.position + new Vector3(2.0f, 0.0f, 0.0f), Quaternion.identity) as Transform;tf.hideFlags = HideFlags.DontSave;//导入名为newScene_unity的新sceneApplication.LoadLevel("newScene2_unity");}
}

在这段代码中,分别对场景中GameObject对象go、新创建的GameObject对象Pl和新实例化的Transform实例tf的hideFlags属性设置为HideFlags.DontSave,然后导入名为newScene2_unity的新场景。

下面是场景newScene2_unity中的脚本代码:

using UnityEngine;
using System.Collections;public class NewScene2_ts : MonoBehaviour {GameObject cube, plane;void Start () {Debug.Log("这是NewScene2!");}//当程序退出时用DestroyImmediate()销毁被HideFlags.DontSave标识的对象//否则即使程序已经退出,被HideFlags.DontSave标识的对象依然在Hierarchy面板中//即每运行一次程序就会产生多余对象,造成内存泄漏void OnApplicationQuit(){cube = GameObject.Find("Cube0");plane = GameObject.Find("Plane");if (cube){Debug.Log("Cube0 DestroyImmediate");DestroyImmediate(cube);}if (plane){Debug.Log("Plane DestroyImmediate");DestroyImmediate(plane);}}
}

在这段脚本中,首先声明了两个GameObject类型的变量cube和plane,然后在OnApplicationQuit()方法中查找当前场景中是否存在名为Cube0和Plane的GameObject对象,如果存在,则在程序退出时将它们立即销毁。图4-1为程序启动前场景中的物体,图4-2为程序启动后场景中的物体,图4-3为在程序退出时未将场景中被保留的物体销毁时的结果(即把场景newScene2_unity脚本中OnApplicationQuit()中的代码注释掉后程序的运行结果)。如果在程序退出时销毁了被ideFlags.DontSave标识的对象,则程序退出后状态如图4-1所示。

本文章内容摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474

Unity3D中HideFlags.DontSave使用解析相关推荐

  1. Unity3D中Layers和LayerMask解析

    Unity3D中Layers和LayerMask解析 Unity中是用int32来表示32个Layer层.int32表示二进制一共有32位(0-31). 在Unity中可编辑的Layer如下图所示: ...

  2. Unity3D中Quaternion.Euler方法解析

    8.3.3 Euler方法:欧拉角对应的四元数 基本语法:(1)public static Quaternion Euler(Vector3 euler); (2)public static Quat ...

  3. Unity Error 打AssetBundle时出现 An asset is marked with HideFlags.DontSave but is included in the build

    出现这种情况的原因是因为项目中有些资源被脚本设置了hideFlags属性为DontSave 解决方案: 全局搜索脚本hideFlags看看有没有代码设置资源的地方.类似图中 如果出现 hideFlag ...

  4. 图文详解Unity3D中Material的Tiling和Offset是怎么回事

    图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...

  5. [darknet源码系列-3] 在darknet中,如何根据解析出来的配置进行网络层构建

    [darknet源码系列-3] 在darknet中,如何根据解析出来的配置进行网络层构建 FesianXu 20201120 at UESTC 前言 笔者在[1,2]中已经对darknet如何进行配置 ...

  6. [Unity3D]Unity3D游戏开发之Xml解析实现NPC对话系统

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.今天我们来说说Unity3D中Xml的解析,为什么要说Xml的解析呢?因为在项目中我 ...

  7. unity3d中ScriptingBackend选择mono和il2cpp的区别

    unity3d中ScriptingBackend选择mono和il2cpp的区别 在iOS和Android上,在Player Settings中选择mono或il2cpp脚本后端.要更改脚本后端,请转 ...

  8. Unity网络(二)-Unity3D中的网络

    正所谓:没有网络是没有灵魂的 欢迎关注公众号:雷潮课堂 Unity3D中的网络 一.WWW 1-1 Get 1-2 Post 1-3 案例(网络下载,本地存储与读取) 二.UnityWebReques ...

  9. 【Unity3D编辑器扩展】Unity3D中实现Text的字体的替换

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

最新文章

  1. sql server 2005 T-SQL @@TRANCOUNT (Transact-SQL)
  2. Java 产生随机数:Java 中产生随机数的方法及应用汇总
  3. weex npm 报错 cb() never called!
  4. 基于W5300和FPGA的实时数据采集系统设计
  5. Scrapy选择器和持久化
  6. 新代数控车床操作系统模拟器_新代数控系统模拟器 下载
  7. 匿名飞控代码解读汇总
  8. python游戏编程讲解之凯撒密码
  9. d3开发Svg编辑器
  10. python没学历可以学习么_python没有学历好就业吗_学历低可以学习python吗
  11. Javaweb二手交易平台(完整版)
  12. 有助于睡眠的15首歌曲,听着最容易入睡的歌曲推荐
  13. 中国红木家具行业规模及投资风险评估报告2022-2028年
  14. 【安卓】【高德地图】调用 mMapView?.onDestroy() 崩溃
  15. 印度人才出口:一半美国科技企业CEO是印度裔 | 数据分析中印青年
  16. Pandas时间序列进阶(日期范围,频率,移位,时区处理)
  17. 信息安全专家李钊博士:信息物理系统概述
  18. Shu-HowZ搭建网站记录
  19. 移动端APP测试用例
  20. 远程答题系统有哪些?远程答题系统如何使用

热门文章

  1. 【stm32f429igt6】的WiFi模块数据收发。
  2. 【富集分析】GO KEGG
  3. 编程基础---echarts学习
  4. 中国移动位置服务基地能力开放平台
  5. java音频剪切_Java使用IO流实现音频的剪切和拼接
  6. 在AD中添加logo
  7. input标签type为number时如何去除加减按钮效果
  8. linux make命令error2,make命令出错,求解释。
  9. php k线15分钟 30分钟,15分钟30分钟K线战法
  10. 什么是信息技术外包?