unity3d之切换场景不销毁物体】的更多相关文章

using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 背景音乐脚本 /// </summary> public class AudioBackground : MonoBehaviour { static AudioBackground StaticObject; private bool LastMusicOn = true; void St…
Unity版本:5.1.1f1 做公司项目的时候,无意间发现了一个很奇葩的现象:场景A(纯UI,故没有光源)转场到场景B的时候,B中原有的光源似乎失效了,但在Hierarchy窗口中能够看到光源存在,调整光源的明度参数,效果也是有的,只是看起来仍然非常暗. 而直接加载B场景就没有任何问题. 上图说明问题.我制作了两个场景,A场景没有灯光,有一个跳转到B场景的按钮: B场景有光源,有一个跳转到A场景的按钮,还放了一个圆柱体用于表现材质问题: 这是直接加载B场景的效果: 这是从A场景跳转B场景的效果…
问题描述 游戏开发中会有多个场景,有时会有这样的需求,我们需要保证场景跳转但是需要保持某个游戏对象不被销毁,比如:音乐 实现思路 unity中提供了DontDestroyOnLoad(),这个API 使用这个指令一般写在跳转场景之前,写在跳转场景的触发事件中,把背景音乐绑定的对象做成预制体,上面绑定了播放音乐的代码 实现代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using U…
先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga…
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中选取场景中的物体.比方为我方角色加入状态.为我方角色添加血量.选择要攻击的敌人等,通常我们使用鼠标来选择一个目标物体,当鼠标移动到目标物体上时,目标物体将显示轮廓线,此时就表示当前物体被选中,我们能够在此基础上为游戏物体进行一系列的操作.那么,这一功能怎样在Unity3D中实现呢?首先我们能够将问题分解为两个…
首先创建两个场景: One,Two 再创建一个空游戏对象: GameObject,并添加AudioSource组件,把要播放的音乐拖放进去 给GameObject添加脚本AlwayAudio,代码如下: using UnityEngine; using System.Collections; public class AlwayAudio : MonoBehaviour { void Start () { DontDestroyOnLoad(this.gameObject); } } 保持Gam…
Cocos Creator 加载和切换场景(官方文档摘录) 在 Cocos Creator 中,我们使用场景文件名( 可以不包含扩展名)来索引指代场景.并通过以下接口进行加载和切换操作: cc.director.loadScene('MyScene'); 通过常驻节点进行场景资源管理和参数传递 通常我们同时只会加载运行一个场景,当切换场景时,默认会将场景内所有节点和其他实例销毁.如果我们需要用一个组件控制所有场景的加载,或在场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它在场…
一.unity3d的优化场景技术  LOD+IOC 遮挡剔除(occlusion culling)其实就是在摄像机范围内的物体才被渲染出来,没有在视野范围内的,统统关掉渲染,这样能让性能大大提高. IOC技术就是实现的这个功能,叫做无缝拼接,原理其实就是摄像机的所有范围内,每一帧都发射许多的射线,与射线碰撞器发生碰撞的物体(此物体必须挂有IOC的脚本和有碰撞器)就会被渲染出来.当镜头转向另一边的时候那一边的所有物体被渲染出来,原来的方向就会自动关掉渲染.LOD技术叫做无极缩放,原理很简单,就是一…
这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网格碰撞器.刚体.触发器.射线(触发)碰撞器. 实验题目 基于SketchUp和Unity 3D的虚拟场景漫游和场景互动(增强现实) 实验内容 实验要求 实验要求是实现虚拟场景漫游和增强显示效果. 模型实现 我们组的项目模型采用SketchUp的小作业房屋设计模型修改而来,最终通过两张房屋设计图分别设…
一.直接切换 老版的(已弃用!): Application.LoadLevel(int index); // 参数是场景编号 Application.LoadLevel(string name); // 参数是场景名字 新版的: // 使用SceneManager! using UnityEngine.SceneManagement; // 必须要引入 public class TestChangeScene : MonoBehaviour { private string sceneName;…
使用unity3d编辑器,在切换场景的时候.NGUI的图集没有释放造成内存不足游戏闪退的问题. 默认情况下,unity3d切换场景之后会释放不用的内存,即内部会调用Resources.UnloadUnusedAssets从而释放未被引用的资源. 问题是.从编辑器的Profiler查看内存使用情况,发现NGUI的图集并没有被释放. 解决的方法: 1.UnloadUnusedAssets 仅仅会在资源没有引用的时候才会有效,包含脚本中静态变量的引用. 我们在关闭不论什么界面的时候.将界面静态变量的引…
在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1.鼠标滚轮实现缩放:将摄像机的镜头拉近或者拉远,调整摄像机的视角就可以实现,主要实现代码如下: void Update () { //鼠标滚轮的效果 //Camera.main.fieldOfView 摄像机的视野 //Camera.main.orthographicSize 摄像机的正交投影 //…
在做游戏开发时,场景中的三角面和顶点数影响着运行效率,尤其是在手机平台上,实时的知道场景中的各项指标,对性能优化来说至关重要,下面我们来实现一个小功能,来实时计算场景中的三角面和顶点数: 如果要知道场景中的三角面和顶点数,首先我们要得到场景中所有的物体,如下: GameObject[] ob = FindObjectsOfType(typeof(GameObject)) as GameObject[]; 其次,在我们得到的这些Gameobject中,有的含有MeshFilter 有的不含有,我们…
1.成员变量 m_BaseDownloadingURL : 获取资源的地方,加载AssetBundle包的时候会用到 m_AssetBundleManifest : 包间依赖关系文件,从这个类中的信息中可以知道某个包依赖的包有哪些,如果依赖的包还没加载进去则先加载依赖包 m_Dependencies : 如上,一个包名对应多个依赖包名 m_LoadedAssetBundles :已经加载入内存的AssetBundle包,一个包名对应一个AssetBundle(AssetBundleInfo包了一…
注意,不像SettingsLayer,CCScrollView实例并没有从场景中删除和重新加载像代码所示的那样. 你只是简单的改变其可视(visible)状态on和off. 改变可视状态比加载CCB或仅仅用代码创建一个新的节点实例更加有效率,尤其是你要频繁的切换场景的时候. 当然,改变可视状态不会释放内存空间.但是,如果你频繁的需要显示一个节点,你不得不保持足够的备用内存去随意显示它们.所以这样的节点当然能在整个时段中保留在内存中.…
unity3d 通过添加rigidBody来指明物体是动态的,以避免cache开销. 如果不添加rigidBody,则unity会认为它是静态的,会对物理计算进行cache,但如果此物体实际上transform一直在发生变化,则unity会不断更新cache,结果反而不如指明其为动态物体效率高.…
开言: 在RPG游戏中,如果有地图切换的地方,通常就会使用幕布效果.所谓的幕布其实就是将两个矩形合拢,直到把屏幕遮住,然后再展开直到两个矩形全部移出屏幕. 为了大家做游戏方便,于是我给这个引擎加了这么一个类. 本系列文章目录: 如何制作一款HTML5 RPG游戏引擎——第一篇,地图类的实现 http://blog.csdn.net/yorhomwang/article/details/8892305 如何制作一款HTML5 RPG游戏引擎——第二篇,烟雨+飞雪效果 http://blog.csd…
编辑器在当前场景时,它的灯光是已经渲染好了,但重新加载的时候灯光没有进行渲染 解决方法如下: Window>>lighting>>Scene面板>>右下角build按钮前,取消勾选auto,这时候是没有烘焙灯光的情形,重新加载场景后不再会变暗. 如果需要烘培灯光,则点击build按钮即可,这时候将保存光照贴图信息,重新加载后也不会再变暗. 打开第一个场景,Window-Lighting-Setting-Scene,右下角Auto Generate去掉对勾,点击Gener…
这个问题估计很多人都碰到过,原因是切换场景的光照贴图数据丢失,解决方案如下: 打开你要切换的场景,打开Windows-Lighting-Settings,将最下面的Auto Generate前面的勾去掉(默认是勾选的),然后点一下Generate Lighting重新生成一下贴图数据就OK了~…
隐藏物体有两种方法,一是设置Meshrender为False,即不渲染物体. 二是设置物体为False,禁用物体,我使用的第二种. 当场景中需要隐藏的物体很多时,我们可以添加一个层来表示需要隐藏的物体. 当加载场景时,遍历隐藏的层内物体添加到List集合中,设置SetActive为False.当需要显示物体时,遍历LIst集合,把需要显示的设置为true. 注意不能在一开始就设置物体为False,否则运行时GameObject.Find会找不到该物体,就无法设置为True. 首先创建集合(引入S…
var HelloWorldLayer = cc.Layer.extend({ sprite:null, ctor:function () { ////////////////////////////// // 1. super init first this._super(); var size=cc.winSize; //旧场景 var background=new cc.Sprite(res.CloseNormal_png); background.setPosition(size.wid…
版权声明:本文为博主原创文章,转载请注明出处. 游戏和电影一样,是通过每一个镜头的串联来实现的,而这样的镜头我们称之为“场景”.一个游戏一般包含一个到多个场景,这些场景里面实现了不同的功能,把它们组合起来就变成一个完整的游戏了.  在电影里面,每个镜头会包含布景,然后还会有演员在表演,摄像机将表演的画面记录下来,然后就变成了电影.同样的,在Unity游戏里面也同样存在相机,它的作用也是将游戏的画面展示在游戏设备的显示屏上面.所不同的是,Unity游戏里面,不论是布景还是人物,所有的东西我们都称之…
[1]:CCTransitionCrossFade::create(时间,目标场景); //慢慢淡化到还有一场景 [2]:CCTransitionFade::create(时间,目标场景); //本场景变暗消失后还有一场景慢慢出现 [3]:CCTransitionFadeBL::create(时间,目标场景); //本场景右上角到左下角方块消失到还有一场景 [4]:CCTransitionFadeDown::create(时间,目标场景); //本场景从上到下横条消失到还有一场景 [5]:CCT…
一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. 而控制器的切换主要为两种方式 push和present modally. 1.0 push出来的子控制器,导航栏控制器会对该子控制器进行强引用(本质就是入栈,在入栈的过程中,可能不止是导航栏控制器对子控制器有强引用) 其中 push 对应着 pop 则控制器会被销毁.其push的本质是入栈,所有的…
本篇实现一个球体在固定区域移动撞击Cube的游戏. 首先有1个Plane当作地面,1个Sphere当作球体,4个Cube当作墙,12个Cube当作被撞击物体,另外还有球体的撞击计算,在撞击的过程适时显示撞击的球体数,12个Cube被撞击后提示游戏结束. 创建项目,创建背景和球 创建一个项目,名称为"MyRollBall",选择项目所在文件,选择"3D"项,点击"Create project". 点击"File"菜单下的&quo…
这篇主要实现向模型对象中添加头像,并组成一个矩形 一.three.js是什么? 上篇说了点TWEEN这篇又来一根THREE是不是两兄弟啊?还真有点像,当想要做3D动画的时候,可能会考虑用TWEEN的动画函数. 其实THREE.JS就是实现3D效果的WEBGL的模型库.内容涵盖量大,目前的技术博文较少,要领会其中部分API需要一点功夫啊. 二.如何建立一个3D模型呢? 先来一个HTML代码.看看我们需要哪些东西 <!DOCTYPE html> <html lang="en&quo…
参考文章:http://www.xuanyusong.com/archives/1991 在看此文章时请先看上面的参考文章 看完以上文章后,你也许会想人家都已经给出所有代码了,你还写个毛啊 别急,现在进入主题 在我的项目中,我采用的是物体遮挡作半透明处理,如果按照上述文章中的思路来写代码的话,那么结果就是当多个物体遮挡角色时,只有第一个物体会半透明,如图: 角色被墙和屋顶遮挡住了,但是可以清楚的看见左下角的墙呈半透明状态,而屋顶依旧不透明 为了解决这个问题,我们不采用上述文章中的 physics…
1创建单独编辑UI的unity场景 UIScene.unity 用来做UI面界 ,创建Resources文件存放UI界面的prefab,代码里动态load资源仅仅能从Resources目录载入 2创建2DUI NGUI->Create->2D UI ,改动camera名字 做成prefab,做为游戏UI全局摄像机 3在UIScene场景中创建单独界面 在之前创建的UIRoot->camera下创那panel做为根,做好详细界面后.从panel层做成prefab 4代码中 用static变…
首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"属性 <activityandroid:name=".FileBrowser"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden"> <in…
第一屏必须: auto scene = GameMenu::createScene(); director->runWithScene(scene); 然后是主场景: auto scene = MainScene::createScene(); Director::getInstance()->replaceScene(scene); 再回来第一屏: auto scene = GameMenu::createScene();director->replaceScene(scene); 结…