Unity 个人资料.docx

上传人:b****2 文档编号:967788 上传时间:2022-10-14 格式:DOCX 页数:44 大小:3.37MB
下载 相关 举报
Unity 个人资料.docx_第1页
第1页 / 共44页
Unity 个人资料.docx_第2页
第2页 / 共44页
Unity 个人资料.docx_第3页
第3页 / 共44页
Unity 个人资料.docx_第4页
第4页 / 共44页
Unity 个人资料.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

Unity 个人资料.docx

《Unity 个人资料.docx》由会员分享,可在线阅读,更多相关《Unity 个人资料.docx(44页珍藏版)》请在冰豆网上搜索。

Unity 个人资料.docx

Unity个人资料

Unity个人资料

1.Unity3D中使用ScriptableObject进行系列化

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。

用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。

这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法

1.using UnityEngine;   

2.  

3.public class XMLContains :

 ScriptableObject   

4.  

5.{   

6.  

7.    public string theXML;   

8.  

9.}   

2.下面提供了一种打包成bundle资源,通过www来进行载入的方案:

通常,可以用BuildPipeline.BuildAssetBundle打包资源,这些资源包括模型、纹理、贴图等。

其实也可以打包ScriptableObject,而ScriptableObject中可以存储任何数据类型。

以下为一个完整示例。

 

1、先创建一个类:

1.using UnityEngine;   

2.  

3.using System.Collections.Generic;    

4.  

5.public class SysData :

 ScriptableObject   

6.  

7.{                 

8.  

9.public List content;   

10.  

11.}  

usingUnityEngine;

usingSystem.Collections.Generic;

publicclassSysData:

ScriptableObject

{

publicListcontent;

}

 

该类只有一个属性content。

当然也可以声明更多属性、事件和方法。

在后面,这个类的实例将作为资源被打包。

2、创建一个编辑器脚本:

该脚本用于实例化SysData,设置一些数据,然后打包。

 

1.using UnityEngine;   

2.  

3.using UnityEditor;   

4.  

5.using System.Collections.Generic;    

6.  

7.public class Export  

8.  

9.{          

10.  

11.  [MenuItem("Assets/Export")]           

12.  

13.  public static void Execute()   

14.  

15.  {                

16.  

17.   //实例化SysData               

18.  

19.   SysData sd = ScriptableObject.CreateInstance();                             

20.  

21.    //随便设置一些数据给content                 

22.  

23.    sd.content = new List();                 

24.  

25.    sd.content.Add(new Vector3(1,2,3));                 

26.  

27.    sd.content.Add(new Vector3(4,5,6));                              

28.  

29.    // SysData将创建为一个对象,这时在project面板上会看到这个对象。

                 

30.  

31.    string p = "Assets/SysData.asset";           

32.  

33.    AssetDatabase.CreateAsset(sd, p);                 

34.  

35.    Object o = AssetDatabase.LoadAssetAtPath(p, typeof(SysData));                              

36.  

37.    //打包为SysData.assetbundle文件。

                 

38.  

39.    BuildPipeline.BuildAssetBundle(o, null, "SysData.assetbundle");                 

40.  

41.    //删除面板上的那个临时对象               

42.  

43.     AssetDatabase.DeleteAsset(p);                        

44.  

45.  }   

46.  

47.}   

48.  

49.   

usingUnityEngine;

usingUnityEditor;

usingSystem.Collections.Generic;

publicclassExport

{

[MenuItem("Assets/Export")]

publicstaticvoidExecute()

{

//实例化SysData

SysDatasd=ScriptableObject.CreateInstance();

//随便设置一些数据给content

sd.content=newList();

sd.content.Add(newVector3(1,2,3));

sd.content.Add(newVector3(4,5,6));

//SysData将创建为一个对象,这时在project面板上会看到这个对象。

stringp="Assets/SysData.asset";

AssetDatabase.CreateAsset(sd,p);

Objecto=AssetDatabase.LoadAssetAtPath(p,typeof(SysData));

//打包为SysData.assetbundle文件。

BuildPipeline.BuildAssetBundle(o,null,"SysData.assetbundle");

//删除面板上的那个临时对象

AssetDatabase.DeleteAsset(p);

}

}

 

3、运行时加载这个数据资源。

1.IEnumerator Start ()   

2.{                

3. WWW www = new WWW("file:

//" + Application.dataPath + "/../SysData.assetbundle");                

4. yield return www;    

5.               

6. //转换资源为SysData,这个sd对象将拥有原来在编辑器中设置的数据。

                

7. SysData sd = www.assetBundle.mainAsset as SysData;   

8. //如打印sd.content[0],将得到Vector3(1,2,3);               

9. print(sd.content[0]);  

10.}  

IEnumeratorStart()

{

WWWwww=newWWW("file:

//"+Application.dataPath+"/../SysData.assetbundle");

yieldreturnwww;

//转换资源为SysData,这个sd对象将拥有原来在编辑器中设置的数据。

SysDatasd=www.assetBundle.mainAssetasSysData;

//如打印sd.content[0],将得到Vector3(1,2,3);

print(sd.content[0]);

}

 

4、这其实是把整个对象实例打包,如果ScriptableObject属性中包括其他的类实例,则这些类需加上[Serializable]序列化。

通过这种方法,可以将系统需要的数据(如角色分类、matrix4x4数据等等)打包,加载后直接转换为预定的类型,具有更高的效率。

 

Unity3D游戏引擎最详尽基础教程

(2012-04-2810:

02:

41)

转载▼

标签:

it

分类:

OpenGLUtity3D

我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?

首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。

二是因为易用,他的操作非常容易,而使用的脚本语言又是JavaScript或者C#,不仅非常简单,也让各个种类的程序员都非常容易上手。

再次,就是因为免费,如果你不使用Pro或者Mobile的内容的话,Unity3d就是完全免费的。

还有就是对3D模型的兼容性,几乎任何3d模型都可以导入到unity中,可以说是一个很方便的特性。

 

今天,我就来讲讲Unity3D的基础操作,这可以说是一个新手必读吧,读完之后,你一定会惊叹,原来做一个游戏这么简单。

 

第一节加入重力

 

我们先打开Unity3d,新建一个场景(Scene),新建的时候应该会有对话框要求你加入哪些AssetPackage,记得选择PhysicsMaterial,因为后面我们一定要用的哦亲。

 

如果创建的时候没加,你可以再后来的Asset菜单里加:

 

 

之后,我们建立一个Cude,调整一下x和z的大小,我这里调成了25,让它变成一个地板,你也可以放一个texture上去,看起来更加真实,我这里从简,再创建一个sphere,在component中选择Physics中的RigidBody,前提是选中你的sphere物体,之后会看到这个Sphere的inpector中加入一个component叫做RigidBody,调整好Camera运行一下,你就会发现Sphere受到重力的影响自动掉落到地板上。

 

 

之后,通过我们之前引入的PhysicsMaterials资源包,你还可以选择这个物体的物理性质,我这里选择Bouncy(跳跳),落下之后,这个物体就会蹦来蹦去的,呵呵

 

 

 

第二节检测碰撞

 

下面我们通过简单的JavaScript语句来检测碰撞,这在制作游戏中是很有用的,比如说检测到子弹和敌人的碰撞之后,可以使用我们后来要讲到destory命令消灭敌人

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1