时间:2021-05-19
在用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()
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在flash中制作游戏中,有时会遇上用按钮切换场景,下面我来教大家如何用flash按钮切换场景。 1、打开flash。 2、在场景1内制作动画。 3、
本文实例为大家分享了Unity中Instantiate实例化物体卡顿问题的解决方法,供大家参考,具体内容如下一、前言当在执行多次Instantiate实例化物体
前面介绍了绘声绘影的视频剪辑功能,下面给大家分享绘声绘影给视频添加切换场景,增加视频效果; 1、首先打开软件 2、将要编辑的视频拖到视频编辑轨道 3、
本文实例为大家分享了Unity键盘WASD实现物体移动的具体代码,供大家参考,具体内容如下1首先在场景中建立一个Capsule,将主摄像机拖到其物体下。2.将脚
本文实例为大家分享了unity实现场景切换进度条显示的具体代码,供大家参考,具体内容如下一、UI。建立slider适当更改即可;二、新增loadScene脚本,