• Unity3D 场景切换

    2018-09-11 10:49:28
    Unity3D中,一个场景在运行中切换到另一个场景的方法 1. 在Unity中 File->Build Settings->把要切换的场景添加到Scenes In Build下面,也可以Add Open Scenes,添加完关闭这个页面,不要点 Build ...

    在Unity3D中,一个场景在运行中切换到另一个场景的方法

    1.  在Unity中 File->Build Settings->把要切换的场景添加到Scenes In Build下面,也可以Add Open Scenes,添加完关闭这个页面,不要点 Build 或者 Build And Run 。

    2. 添加需要加转换场景的代码。

    //首先要记得加上引用命名空间

    using UnityEngine.SceneManagement;

    //然后在需要的代码区域加上:

    SceneManager.LoadScene("SceneName");//要切换到的场景名

    或者

    SceneManager.LoadScene(0); //数字不一定是0,括号里数字是场景的编号,这个编号就是在 File->Build Settings ,上方 Scene In Build,场景名字那行最右边的数字

    展开全文
  • Unity3D场景切换

    2016-05-05 20:33:18
    首先新建两个场景:Scene_1与Scene_2 在第一个场景Scene_1中加入UI控件Button,Text设置为“点击切换场景”,名称为默认值“Button” ...新建一个脚本,命名为ChangeScene,作为组件添加到Button按钮中: ...usin

    首先新建两个场景:Scene_1与Scene_2


    在第一个场景Scene_1中加入UI控件Button,Text设置为“点击切换场景”,名称为默认值“Button”


    新建一个脚本,命名为ChangeScene,作为组件添加到Button按钮中:


    在代码中加入点击事件:

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;//注意这个不能少
    public class ChangeScene : MonoBehaviour {
        // Use this for initialization
        void Start () {
    
            GameObject btnObj = GameObject.Find("Button");//"Button"为你的Button的名称
            Button btn = btnObj.GetComponent<Button>();
            btn.onClick.AddListener(delegate ()
            {
                this.GoNextScene(btnObj);
            });
        }
    
        // Update is called once per frame
        void Update()
        {
        }
    
        public void GoNextScene(GameObject NScene)
        {
            Application.LoadLevel("Scene_2");//切换到场景Scene_2
        }
    }
    
    这样场景切换就成功了,运行结果如下:

    运行Scene_1:

    点击按钮后进入Scene_2:



    展开全文
  • Unity3d场景切换

    2016-12-20 09:38:35
    //为了方便演示,在第一个场景内设置一个按钮,点击这个按钮,触发切换新场景时间 //在该场景内的按钮添加一个C#脚本组件Component //在Button控件创建的组件 //在常见组件之前,我们先创建一个...

    //为了方便演示,在第一个场景内设置一个按钮,点击这个按钮,触发切换新场景时间



    //在该场景内的按钮添加一个C#脚本组件Component


    //在Button控件创建的组件



    //在常见组件之前,我们先创建一个createNewScene.cs文件,用于单例模式

    createNewScene.cs

    private string warriorPath = "Prefabs/Character/Warrior";
    
    GameObject obj = (GameObject)Resources.Load(warriorPath);//获取角色存放路径
    
    
    warriorObj = GameObject.Instantiate(obj);//实例化
    warriorObj.transform.position = Vector3.zero;//角色的位置转换


    startGame.cs

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    
    
    public class startGame : MonoBehaviour {
    
    
    // Use this for initialization
    void Start () {
            Button btn = transform.GetComponent<Button>();//获取场景中的按钮
            btn.onClick.AddListener(eventListener);//点击事件触发(回调)
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    
    
    
        void eventListener()
        {
            createNewScene.create.loadScene("createMan");//“createMan”是新场景名称
        }
    }
    
    
    
    //运行第一个场景,点击按钮,场景发生切换
    
    
    


    展开全文
  • Unity3D无缝场景切换解决方案 - 简单场景切换

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    所谓无缝场景切换,无非是涉及到场景或物体的预读,复杂点涉及下场景卸载,在复杂点涉及到场景二维数组,再在复杂点涉及数据结构用二叉树实现场景资源有序的读取与卸载。当然,复杂的我以后慢慢再说,比较懒,先写最简单的,如果能起到抛砖引玉作用,那这篇文章也算是物有所值了。


      无缝场景切换的优缺点:


      优点:


      1.场景(游戏)连贯性。


      2.相对于多场景游戏,不需要等待场景更换(在进入场景后已经在实时加载下一个场景了)


      3.相对于单个大场景,这种方式能避免所有的场景数据被装入内存(尽管U3D优化很好并不会被渲染出来),很大的数据在内存里影响你游戏的性能(特别是在iphone这种小内存环境)。


      缺点:


      1.操作繁琐(本文介绍比较基础简单的方式)


      2.开发者要求较高(注意保持逻辑清晰,不然后期你会全乱掉的)


      涉及到几个U3D函数:


      Application.LoadLevel(lv)     场景读取(记着用多场景前要现在File-Build Setting里登记下场景,才能在脚本里读取到) DontDestroyOnLoad(object)  保持物体在场景切换的时候不被卸载(能保持他的所有属性哦)


      *AssetBundle 类       预读资源(主要用于web3d,运行时实时从服务器下载需要的场景资源)


      涉及到几个基础知识:


      static 静态类、静态变量:在整个游戏中都不会被重新加载,所以可以当全局全场景变量使用,主要用于记录场景数组。


      Collider的Is Trigger属性:设置成True,他是可以穿越不会产生能量传递的,但是,他是可以接受碰撞侦测的。配合主角的OnTriggerEnter事件,就可以知道你是否正在穿越一个Trigger了。在这里,我们用在判断何时加载新场景上。


      简单的无缝场景切换方案:


      1.建立场景(已经做好很大场景的就准备做切割吧)


      场景尽量小,如果是web3d,那需要更小,已保证场景在网络上传输时间不至于太长,在漫游中再实时读取其他场景数据。一般来说,场景大小考虑因素有两种:如果是web3d模式,考虑网络传输速度;如果是pc,mac,wii,iphone,那就得考虑内存或显存能吃你多少场景数据并且处理起来不费力。


      按照你所需要建立的无缝场景切换方式,你可以按场景的坐标建立以下几种方式:


      1 ) 双场景切换(本文重点)                2)九宫格场景切换


      1)双场景切换:用于单个场景较大的情况。同一时间只加载1个到2个场景(预读周围4个场景),场景间需要交错,避免让用户看到场景的边界深渊=.=.当用户走到边界,就加载下一个场景,如果走到4个顶点,加载下两个场景(如果场景庞大应尽量用障碍物避免用户走到顶点,因为走到顶点要加载的数据是走到边界加载的2倍-,-)


      2)九宫格场景切换:用于单个场景较小的情况。因为同一时间需要在内存中载入以用户为中心的周围(包括本地)9个场景资源,不同于双场景切换的是,场景间不需要交错,因为用户视野永远不会看到当前场景界限。用9宫格方式需要将场景预先存入静态的二维数组,以便读取使用。


      2.制作场景边界


      使用Cube + IsTrigger=True属性是最好的办法。


      1)如果是双场景切换,注意两个场景边界坐标别重在一起,不然你走到边界会发现两个边界不停的切换=.=,要让2个场景边界互相交错一起(做的时候你自然会明白)。有必要的话,边界可以往里面缩一点(甚至可以吧场景重叠1/3,但这样两个场景你要做很多重复的东西),避免用户看到边界。然后建议是把Cube的名字设置成邻接场景名称,因为待会儿写脚本时候方便。


      2)如果是九宫格场景,那就不需要重在一起了,边界Cube名字建议使用本场景的名字,因为这样你一走到下一个场景,就可以知道你在的场景位置而读取周围新场景了。


      3.编写脚本


      好了,现在可以开始写脚本了,我一如既往的很懒,所以不会吧全部代码粘帖出来[unity3D]无缝场景切换解决方案(1) - 简单场景切换 - kingmax_res - kingmax_res的博客。


      先理清楚逻辑关系以及一些常识:


      1.是主摄像机走到边界才会做场景加载或卸载动作。所以代码是放在主摄像机上或者主角上。


      2.场景可以加载,但是没有卸载场景这个东西(也没必要卸载,因为同一时间只会有一个场景为当前场景),所以如果你用九宫格方式做无缝连接,你需要把场景读取,然后让场景里所有物体DontDestroyOnLoad(当然包括主角,也就是this),然后其他场景也这么操作,当需要卸载场景时,只要把所有那个场景Object给Destroy掉就可以了。而做双场景连接则不需要这样,也简单的多。


      3.如果是九宫格,你需要一个静态二维数组去记录每个位置场景的名字。这里也可以不需要这么做,有个技巧,你可以格式化场景名字规则来推算下一个需要加载的场景名字,比如M1N1表示(1,1)场景,那你就可以用字符串拆分的方法知道需要读取M0N0,M1N0,M2N0等等的场景。


      4.接下来就是处理碰撞,获取下一个场景(双场景方式)或者当前场景(九宫格方式)的名字,这里你就可以看到一个被格式化过的场景名有多么重要。


      function OnTriggerEnter(other:Collider){


      Application.LoadLevel(other.name);  //这是双场景方式直接把边界Cube名字设为了下一个场景名


      }


      更加复杂化的无缝切换方案思路:


      1.使用角色与边界距离动态判断,以确定载入时机以及载入哪个方位的场景。


      2.加入判断角色为中心的圆内的物体加载(操作起来有点复杂,除非你整个场景是数字化的,或者干脆是动态生成的),这需要一个加权的二叉搜索树将大地图所有的物体放进去,在满足条件时候去载入最近的。


      (仅提供思路,可能有更好的数据结构去优化他)

    转自:http://www.unitymanual.com/thread-5573-1-1.html



               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Unity3D Lightmap贴图、加载、替换与切换Unity3D Lightmap贴图、加载、替换与切换
  • unity3d 游戏场景切换

    2020-03-13 15:13:43
    LevelSelect using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class LevelSelect : MonoBehaviour { ... // Use this for initializati....

    LevelSelect

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    public class LevelSelect : MonoBehaviour {
    
    	// Use this for initialization
    	public bool isSelect=false;
    
    	private void Awake(){
    		
    	}
    	void Start () {
    		if(transform.parent.GetChild(0).name==gameObject.name){
    			
    		}
    	}
    	
    	// Update is called once per frame
    	void Update () {
    		
    	}
    	public void Selected(){
    		PlayerPrefs.SetString("nowLevel","level"+gameObject.name);
    		SceneManager.LoadScene(*);
    	}
    }
    

    LoadLevel

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class LoadLevel : MonoBehaviour {
    
    	// Use this for initialization
    	
    	private void Awake(){
    		Instantiate(Resources.Load(PlayerPrefs.GetString("nowLevel")));
    		
    	}
    }
    
    
    展开全文
  • 因此,UGUI的事件设置也是很重要的,下面举个例子来说明,Unity3D中如何进行场景切换、UGUI组件事件、开始游戏与关闭游戏的。如下图所示: 我们将设置2个场景,其中一个场景极其简单,只有
  • 最近一直在搞3D漫游,在第一人称和第人称视角切换碰到些问题,视角的例子我是导入的官方的character controller包,不得不佩服官方脚本语言的写法,看了一下写的很完美,新手估计比较难看懂,里面涉及到一些角度,...
  • unity3d 游戏3d仿真虚拟现实现实增强外包.unity脚本代码——摄像机的切换
  • Unity3D 画面扭曲切换效果脚本 DreamWipe.js 1. var camera1 : Camera; 2.var camera2 : Camera; 3.var fadeTime = 4.0; 4.var waveScale = .07; // Higher numbers make the effect more exaggerated. Can be ...
  • unity3d / 按钮 /切换

    2017-08-25 06:55:23
    求问unity3d中如何:实现点击添加的按钮,使一个场景跳转到另一个场景?谢谢啦!
  • Unity3d之无缝地形场景切换–解决方法和代码 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100 100 100坐标一下切换到场景2的100 100 100坐标...
  • Unity3d中提供了场景Scene的概念,Scene就是一组...Unity3d提供了一些切换场景的规则和方法(例如在切换场景时不销毁某些GameObject,同步,异步加载场景API),但是并没有提供一个通用的场景管理的模块(想要做到“通
  • Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在。如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一些画面、动画...
  • 2018年什么游戏最火? 不用问,肯定是人人都在撸的“王者荣耀”和吃鸡游戏了。...Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如维视频游戏、建筑可视化、实时维动画等类型互动内容的多平台的综...
  • Unity3D中所使用的编程语言有种:C#,JS和BOO。同时自带了免费的编辑器,然而在windows下,编辑器还是VS最强大,所以本文就探讨如何配合Unity3D使用VS2008。1、创建一个Unity3D工程,在指定的目录下会生成Asset...
  • unity3d 多个摄像机之间的切换 教程 源码 直接有效可用
  • unity3d在浏览器上访问展示demo,unity3d web player demo。 包括内容:UnityWebPlayerFull.exe、UnityObject2.js、jquery.min.js、test.unity3d
  • unity3d切换武器

    2019-07-20 01:54:04
    //NextWeapon.js ----------------------------------...//宣告 : 使用介面模版、武器順序、目前及下一個武器(取得名稱用)、3把武器、二個前段介面文字 var MySkin : GUISkin; var WeaponSort : int = 0; private...
1 2 3 4 5 ... 20
收藏数 10,693
精华内容 4,277
热门标签