2017-12-03 22:25:30 qq_39574690 阅读数 7012
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12817 人正在学习 去看看 宋晓波

 Application.LoadLevelAsync(int index);

//通过场景索引号异步加载场景,异步加载即后台加载,加载过程显示的依旧是原场景,也可以设置一个加载场景+进度条之类的过渡。

前提:按File - Build Settings -将需转换的场景全部放进去(原场景也要),看见场景名最右边的数字就是场景索引号。

   Application.LoadLevel():同步加载 会销毁当前场景 适合加载小场景

   Application.LoadLevelAddictive();同步附加式加载 不会销毁当前场景 适合加载小场景

   Application.LoadLevelAddictiveAsync();异步附加式加载 不会销毁当前场景 适合加载大场景

目前新版本有新出以下2个加载

using UnityEngine.SceneManagement;

SceneManager.LoadScene(场景索引号);同步加载

SceneManager.LoadSceneAsync(场景索引号);  异步加载



2018-10-25 13:56:07 weixin_42513339 阅读数 6015
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12817 人正在学习 去看看 宋晓波

1.暂停游戏。

Time.timescale = 0;

2.继续游戏。

Time.timescale = 1;

3.重新开始。

using UnityEngine.SceneManagement;

SceneManager.LoadScene (0);

其中,0,为游戏场景的索引号,具体索引号在build的时候加入场景的时候后面写的有。

4.退出游戏(在开发时,会没反应,打包后就可以了)

Application.Quit(); 

 

//这个代码仅仅是测试开发用的,并非是打包后的退出,这个需要注意

UnityEditor.EditorApplication.isPlaying = false;

PS:关于Editor相关详细可以看我这一篇https://blog.csdn.net/weixin_42513339/article/details/83411060

2013-01-21 21:00:55 wxg694175346 阅读数 9624
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12817 人正在学习 去看看 宋晓波

学习Unity脚本推荐:Unity3D官网索引


首先一点,你要确保有一个想要跳转的目标场景。在本案例中,目标场景是ending。

第一步:创建一个碰撞体,放置在需要的触发场景跳转的位置



第二步:删除多余的脚本,并且新建自己的脚本:



第三步:查阅相关文档,具体网址参见上篇博文:



第四步:将如下代码复制到你的脚本中:

// loadLevel.js
// This is used to load a level set in the inspector

var level:String; // Then anything you type will not be run

function Update () {
}

function OnTriggerStay (theCollider : Collider) {
	Application.LoadLevel (level);
}


第五步:此时再将Inspector面板中的level字符串改成ending:


这样做的好处是不用每次都新建脚本文件实现跳转,一个脚本就实现了跳转功能。



2013-01-19 12:03:46 wxg694175346 阅读数 11505
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12817 人正在学习 去看看 宋晓波

学习Unity脚本推荐:Unity3D官网索引


本章我们将会了解到如何使用Unity3D自带的地形系统简单的创建地形,使用的版本为Unity4.0版本。

先来创建一个新项目,命名为TankWar,以后的相关文件都放置在这个文件夹下面。



创建完毕之后是一个空白的工程,只有一个Camera在场景中。

CTRL+S将该场景存档为TankWar0.1,做好版本控制。

我们点击Terrain,选中Create Teerain,便创建了一个地形:



可以看到地形的默认坐标就是0,0,0,我们调整摄像机的位置以便及时观察地形。

选中摄像机后,按下W是调整坐标,按下E是旋转变换,按下R是放缩变换。

调整后场景有点暗,再添加一个灯光:GameObject->Create Other->Direactional Light,创建一个平行光源。

旋转平行光可以修改它对场景的亮度影响,也可以调节光源的强度,通过调整Intensity值来修改。

整体效果如图所示:



下面来对地形进行相关设置。

在Hierachy面板中单击Terrain,在Inspetor面板可以看到许多选项。

我们先选中第一个:



这个是提升/降低地形的选项,下面有不同形状的笔刷来实现地形的提升和降低,鼠标左击是提升,按住shift键再左击就是降低地形,效果如下图所示:



大致画好轮廓之后我们可以选中第四个选项,为地形赋上材质。

在设置材质的时候我们可以使用Unity自带的地形材质,在Project面板右击,选择Import Package,选择其中的Terrain Assets,引入Unity的相关素材。

引入后可以打开看看里面的内容:



我们再次选中地形,选择第四个笔刷选项,点击Edit Textures,选择Add Texture添加贴图,这个时候就会有很多选项提供选择了。



选中一款中意的材质之后我们还可以再添加一款材质,选中之后在Scene面板里面可以像画笔一样把材质刷上去,用这种方法把山体涂成绿色:



效果有点丑,果然程序猿还是做不来美工的活,大家就凑合着看看吧。。

下面我们来给场景中添加一些小东西,比如说,草。

选中Terrain中的第六个按钮:Paint Details。

然后添加一个纹理,选择Grass,在场景中点击即可放置一片杂草:



当然你也可以放置一片树,选择第五个按钮,Place Tree即可。

添加Palm的纹理,在场景中点击即可添加树丛。

点击后放置树丛,效果如图:



那么Unity3D自带的地形系统就简单的介绍到这里,可以说还是比较强大的。

当然,还有很多的空间需要大家自己探索。

2013-01-25 19:04:00 wxg694175346 阅读数 12340
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12817 人正在学习 去看看 宋晓波

学习Unity脚本推荐:Unity3D官网索引


在Unity中的数据存储和IOS中字典的存储基本相同,是通过关键字实现数据存储与调用。

下面来介绍一下Unity用来存储数据的PlayerPrefs 类

使用PlayerPrefs可以在在游戏会话中保持并访问玩家偏好设置。

在Mac OS X上PlayerPrefs存储在-/Library/PlayerPrefs文件夹,

名文unity/[companyname]\[product name].plist,这里company和product是在Project Setting中设置的,相同

的plist用于在编辑器中运行的工程和独立模式.

在Windows独立模式下,PlayerPrefs被存储在注册表的HKCU Software[companyname]\[product name]键下,这里company和product是在Project Setting中设置的.

在Web模式下,PlayerPrefs存储在Mac OS X的二进制文件-/Library/Preferences/Unity/WebPlayerPrefs中和Windows的%APPDATA%\Unity\WebPlayerPrefs中,一个偏好设置文件对应一个web播放器URL并且文件大小被限制为1兆。如果超出这个限制,SetInt,SetFloat和SetString将不会存储值并相处一个PlayerPrefsException.

类方法

◆ static function DeleteAll(): void
描述:从设置文件中移除所有键和值,谨慎的使用它们。

◆ static function DeleteKey(key: string): void
描述:从设置文件中移除key和它对应的值

◆ static function GetFloat(key: string, defaultValue: float=OF): float
描述:如果存在,返回设置文件中key对应的值.如果不存在,它将返defaultValue。

print(PlayerPrefs.GetFlat("Player score"));

◆ static function GetInt(key: string, defaultValue: int): int
描述:返回设置文件中key对应的值,如果存在.如果不存在,它将返回defaultValue
print(PlayerPrefs.GetInt("Player score"));

◆ static function GetString(key: string, defaultValue: string=**): string
描述:返回设置文件中key对应的值,如果存在.如果不存在,它将返回defaultValue.
print(PlayerPrefs.GetString("Player Name"));

◆ static function HasKey(key: string): bool
描述:在设置文件如果存在key则返回真.

◆ static function SetFloat(key: string, value: float): void
描述:设置由key确定的值.
print(PlayerPrefs.SetFloat("Player Score", 10.0));

◆ static function SetInt(key: string, value: int): void
描述:设置由key确定的值.
PlayerPrefs.SetInt("Player Score", 10);

◆ static function SetString(key: string, value: string): void
描述:设置由key确定的值.
PlayerPrefs.Setstring("Player Name", "Foobar");


下面通过一个案例简单演示一下。

首先创建两个场景用来实现场景的跳转,命名为CSDNPrefabs1和CSDNPrefabs2来做实验。

基本需求是在第一个场景中创建一些数据并且跳转到第二个场景中显示出来。

创建一个Scene1.cs脚本:

using UnityEngine;
using System.Collections;

public class Scene0Main : MonoBehaviour {

	//储存数据的显示
	public string testStr;
	public string testInt;
	public string testFloat;
	
	//GUI皮肤 为上面我们添加的皮肤
	//在外面用鼠标拖动上为它赋值
	public GUISkin fontSkin;
	//显示的图片
	public Texture Imagetexture;
	 
	// Use this for initialization
	void Start () {
		//读取key的值
		testStr = PlayerPrefs.GetString("testStr", "default");
		testInt = PlayerPrefs.GetInt("testInt", 0).ToString();
		testFloat = PlayerPrefs.GetFloat("testFloat", 0).ToString();
		
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	
	
	void OnGUI() {
		
		//将GUI的皮肤设置为我们创建的皮肤
		GUI.skin = fontSkin;
		
		//贴上图片
		GUI.DrawTexture(new Rect((Screen.width - Imagetexture.width) >>1, 10, 120, 120), Imagetexture);
		
		//添加输入框让用户输入信息,这里面我没有捕获异常,因为用户有可能输入一个不合法的数值
		testStr = GUI.TextField (new Rect(10, 200, 200, 50), testStr, 50);
		testInt = GUI.TextField (new Rect(10, 250, 200, 50), testInt, 50);
		testFloat = GUI.TextField (new Rect(10, 300, 200, 50), testFloat, 50);
		
		//点击按钮保存所有数据
		if (GUI.Button(new Rect(220, 200, 150, 100), "commit all"))
		{
			
			PlayerPrefs.SetString("testStr", testStr);
			PlayerPrefs.SetInt("testInt", int.Parse(testInt));
			PlayerPrefs.SetFloat("testFloat", float.Parse(testFloat));
			//切换场景到scene1
			Application.LoadLevel("scene1");
		}
	}
	
	
}

创建一个Scene2.cs脚本:

    using UnityEngine;  
    using System.Collections;  
      
    public class scene1Main : MonoBehaviour {  
      
        public string testStr;  
        public string testInt;  
        public string testFloat;  
          
        public GUISkin fontSkin;  
        public Texture Imagetexture;  
           
        // Use this for initialization  
        void Start () {  
            testStr = PlayerPrefs.GetString("testStr", "default");  
            testInt = PlayerPrefs.GetInt("testInt", 0).ToString();  
            testFloat = PlayerPrefs.GetFloat("testFloat", 0).ToString();  
              
        }  
          
          
        void OnGUI() {  
            GUI.skin = fontSkin;  
              
            GUI.DrawTexture(new Rect((Screen.width - Imagetexture.width) >>1, 10, 120, 120), Imagetexture);  
              
            //显示label  
            GUI.Label(new Rect(10,150,300,50),"testStr = "+ testStr);  
            GUI.Label(new Rect(10,200,300,50),"testInt = "+ testInt);  
            GUI.Label(new Rect(10,250,300,50),"testFloat = "+ testFloat);  
              
            if (GUI.Button(new Rect(220, 200, 150, 100), "clean all"))  
            {  
                //删除所有键值  
                PlayerPrefs.DeleteAll();  
                // 返回场景0  
                Application.LoadLevel("scene0");  
            }  
              
            if (GUI.Button(new Rect(220, 320, 150, 100), "only return"))  
            {  
                // 返回场景0  
                Application.LoadLevel("scene0");  
            }  
        }  
    }  

然后添加相关贴图的GUISkin完成部署:


此时运行会报错,因为这两个场景需要Build:

这是再运行就可以看到这个简单的Demo了。

在这里输入完毕之后点击commit all:

在另一个场景中便也能显示了。

Unity3D SetActive二三事

阅读数 25748

没有更多推荐了,返回首页