unity3d学习记录Word文档下载推荐.docx

上传人:b****5 文档编号:20237434 上传时间:2023-01-21 格式:DOCX 页数:18 大小:592.11KB
下载 相关 举报
unity3d学习记录Word文档下载推荐.docx_第1页
第1页 / 共18页
unity3d学习记录Word文档下载推荐.docx_第2页
第2页 / 共18页
unity3d学习记录Word文档下载推荐.docx_第3页
第3页 / 共18页
unity3d学习记录Word文档下载推荐.docx_第4页
第4页 / 共18页
unity3d学习记录Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

unity3d学习记录Word文档下载推荐.docx

《unity3d学习记录Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《unity3d学习记录Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

unity3d学习记录Word文档下载推荐.docx

Xnview图片浏览软件

备注3:

ProceduralMaterials

备注4:

下载quicktime,.fbx安装程序下载

5、.fbx可以用3dsmax直接输出旧版本的。

但也可以自己下载FBX。

网络搜索FBX,链接到autodesk下载,2012版本都是支持。

6、导入视频格式可以支持.mov,到苹果网站下载quicktime

7、在项目管理和层级管理面板(场景管理面板),选中物体,按f2键可快速重命名

8、在层级管理面板(场景管理面板)中可设置物体间的父子关系

9、在场景面板中,按住鼠标右键可进入飞行模式,同时配合w\a\s\d\Q\E可以进行自由平移,w前进\a左平移\s后退\d右平移\Q上移仰视\E下移俯视;

按住鼠标右键动鼠标控制视野;

按住鼠标alt键和鼠标左键控制场景旋转;

按住鼠标alt键和鼠标中键控制场景平移;

按住鼠标alt键和鼠标右键控制场景推拉;

10、场景面板中的center/Pivot是控制几个物体组合后的坐标中心位置,center是这个群体的中心为坐标中心位置,Pivot是以第一个选择的物体作为坐标轴中心位置。

Local/Global是物体的个人坐标系和全局坐标系,个人坐标系是选择物体后包围物体的线条围绕此线条方向旋转。

全局坐标系是场景面板右上角的坐标,物体沿此坐标系旋转。

脚本部分

1、Unity3D脚本的选择:

C#只能在.net环境下使用/Boo/Javascritp这三种都可以使用,Unityscript脚本开发用上述语言

2、Unity3D脚本的编写

脚本代码文件为文本文件,可以用任意的文本编辑软件编写

FunctionStart()

{

Print(“hello”);

}

3、“编辑”菜单->

参数Preferences面板中,选择externaltools选项下的外部脚本编辑工具externalscripteditor,可指定脚本编辑工具。

4、旋转脚本

gameObject.transform.rotate(x轴,y轴,z轴);

5、声明变量

#pragmastrict

Var变量名称:

数据类型;

//变量名称用字母、数字、下划线作为变量名,以字母开头

6、变量数据类型

//byte:

字节类型250-0;

//short:

短整32767--32768

//int整型

//long长整型

//float单精度浮点型

//double双精度浮点型

//Boolean布尔值true/false

//char字符型

//string字符串型

7、输入状态(Input

输入设备接口

通过接口可以读取输入设备状态

Staticvaranykey:

Boolean//任意键状态

StaticvarmousePosition:

Vector3//鼠标位置

StaticfunctionGetKey(Key:

KeyCode):

bool//获取按键状态

StaticfunctionGetMouseButton(button:

int):

bool//获取鼠标按钮

varn:

GUIText;

vari:

boolean;

functionStart(){

n=gameObject.GetComponent(GUITExt);

//n.text=”abcv”;

functionUpdate(){

i=Input.anyKey;

n.text=”按键状态:

”+i;

8、数组:

Javascipt里可以使用两种数组,分别为内建数组和Array数组。

内建数组速度最快,并旦可以在Inspector视图里编辑,但是不能动态调整大小。

Array数组可以调整大小,且提供了常用的台并、排序等功能,但是不能在lnspector视图里编辑,速度较内建数组慢。

第三部分javascript

1、Unity中的javascript和浏览器中的区别:

在Unity里,一个js文件就是一个类。

从前基于浏览器的JavaScript是通过prototype来实现类(我一直用的是prototype.js框架)。

在Unity,比如要写一个Hello的类,里面有一个方法叫sayHello,建立一个Hello.js,然后在里面写

functionsayHello(){

 

//dosomething

就可以了。

而从前用浏览器的JavaScript实现类,实际就是写个function,比如

varHello=function(){

this.sayHello=function(){

如果用prototype.js框架,就这么写:

varHello=Class.create();

Hello.prototype={

initialize:

function(){

},

sayHello:

};

继承

在Unity里,这么写:

新建一个MyHello.js文件,然后写

classMyHelloextendsHello{

而从前基于浏览器的继承,我一般都是用prototype里的bind()方法来做。

还有虚拟函数的写法之类的,可以在那篇文章里找到。

数据类型

在Unity的JavaScript里,string叫String(S大写)。

字符串必须用双引号,不能用单引号,而在从前基于浏览器的JavaScript里,单引号或者双引号随便写,也可以引号套引号。

变量必须先声明

主要可能是因为Unity里的JavaScript需要编译,所以在Unity里,变量必须事先声明才能使用,否则会出错。

变量的类型的写法

定义变量的时候,前面写var,表示是变量,然后写名字,后面跟冒号,冒号后面跟数据类型。

比如

vara:

String;

写函数带的参数时也这么写,比如

functionTest(param1:

String,param2:

Object){

//functionbody

另外,如果直接定义了变量的类型,后面就不能改了,除非开始不定义变量类型。

vara="

test"

;

a=5;

这样就会出错。

但是如果这么写

vara;

a="

就没问题。

对象

在从前基于浏览器的JavaScript里,这么写是没问题的:

vara=newObject();

a.myField=22;

不过在Unity里就完全不行,要想这么做,参考这个文章(不翻译了,都是代码)

早期Unity不支持switch()或者eval_r()函数

2.0之后就支持switch了,另外不建议用eval……不过我比较习惯用eval,虽然不是个好习惯。

每行后面必须写分号

基于浏览器的JavaScript里,不写分号也没什么问题,在Unity里,必须写。

不能写匿名函数

大概的意思就是不让用这种写法:

varbar=function(){}

我之前基于浏览器的JavaScript里总习惯这么写,因为经常会function里面套function。

不过这么写倒是可以的

functionfoo(x){print(x);

}

varbar=foo;

bar("

);

Math在Unity里叫Mathf

基本一样,就是后面加个小写的f。

从前怎么用现在还怎么用就行了。

常用的比如Math.round(),Math.ceil(),Math.floor()之类的……

调用Mono

Mono里面很多东西都可以拿来在JavaScript里用,想用就直接import:

importSystem;

importSystem.IO;

调试

可以用print()函数,也可以用Log()函数或者Debug.Log()函数。

如果想设置断点,用Debug.Break()函数。

从前log这种东西还要自己写,然后显示在一个div里,现在用Unity倒是方便了。

项目制作流程

1、 

保存好所需图片,背景、按钮、各类用图。

2、建一个空Project,将屏幕分辨率改为800*600.

File--->

BuildSettings...---->

PCandMacStandalone--->

PlayerSettings...--->

ResolutionandPresentation

3、Project面板中创建文件夹pic。

导入图片。

4.在场景中创建一个GUITexture,重命名为Logo,然后Logo图片放到这个GUITexture上,修改其参数如下:

5、创建一个Scene,命名为PlayScene。

然后把Scene都加入到build中

6、我们来写个脚本实现界面切换功能。

vartimeInterval:

int=4;

varlevel:

int;

privatevartimeUpdate:

float;

functionStart(){

functionUpdate(){

timeUpdate+=Time.deltaTime;

//deltaTime时间增量

if(timeUpdate>

timeInterval){

Application.LoadLevel(level);

7、将这个脚本赋给LogoScene中的camera,将Level值改为1.

8、OK,运行试试吧!

项目延续1_背景滚动

1.利用GUITexture搭建背景。

利用2个GUITexture拼接。

拼完就建立一个空的GameObject,把那些Texture组合起来,方便统一管理。

标题文字再新建一个GUITexture。

不添加移动的代码

注意:

修改Z轴数值可以改变各个Texture的前后显示,比如,让Texture1显示在Texture2前面,就使Texture1的Z轴数值大些就可以了

2.写脚本使背景循环移动

原理很简单,就是利用两张背景图循环切换就行了。

如果在两张背景图循环切换时发现有空隙,可以使每张背景图的宽度稍微大于屏幕显示宽度就行了。

varmoveSpeed:

float=0.1;

transform.Translate(Vector3.left*moveSpeed*Time.deltaTime);

if(transform.position.x<

=-1){

transform.position.x=1;

3、OK,将代码赋给背景GameObject,运行下试试!

NGUI使用

一、NGUI安装

二、NGUI

1、UIROOT(2D):

界面根节点、入口点。

2、Camera:

NGUI生成的摄像机对象,它将直直的照射在锚点面板。

3、Anchor:

界面的锚点,影响UI的显示位置。

它下面会挂着面板。

4、Panel:

面板,摄像机照射着它,它下面会挂一些控件,比如标签、按钮、精灵、拖动条等等。

5、UI脚本说明:

(1)UIButtonScale:

用于缩放按钮,可以设置鼠标经过按钮变大变小,或者鼠标点击按钮变大变小

三、NGUI图集制作

1、在PS里面设计好要做的UI,然后切片成很多个png的图片

2、在Unity中 

Project下新建一个Folder,F2重命名为ResUI,以后就用来存放所有的UI,在ResUI里面重新新建一个Folder,我们这次以开始界面为例,因此F2重命名这个Folder为StartUI,这个StartUI用来存储关于开始界面的所有资源。

3、找到工程文件的根目录,把刚刚切好的png图片拷贝到StartUI文件夹里面(也可以在Unity里面用ImportNewAsset的方式导入,但是这种导入方式只能一张一张进行,比较慢),再打开Unity,鼠标选中StartUI文件夹中所有图片,在Unity上方点击NGUI中的AtlasMaker选项(快捷键为Shift_Alt_M),出现如图所示窗口:

给图集命名为StartUI-Atlas,如图:

然后鼠标选中StatUI文件夹下的所有png图片(这个就不用说怎么做了吧,哈哈),会在窗口中显示选中的图片,点击Create按钮,那么这个图集开始界面的图集就制作好了·

·

4,制作图集会自动生成一张图集,一个prefab文件,一个material文件和一张贴图,点击这个prefab,在Inspector窗口会显示图集信息,刚刚有几个png图片,图集里面就会有几个sprite,在这里可以调节sprite的大小和位置,width和length用来调节大小(宽度和长度),Border是用来制作SliceSprite时才会用到的,除SliceSprite外四个值都调为0.

SliceSprite是一个可以拉伸的sprite,通过border中设置的值,它扩大的时候只会扩大中间的部分,边缘的不会有变化,因此对于有发光边缘的但内部无渐变无图片的背景,可以将发光部分设置为边缘,可以无限的扩大也没有任何视觉影响,这样极大的节省了资源。

5,在show里可以选择显示整张图集还是只显示一个sprite,

同时在这里也可以删除或者添加sprite,

也可以给Sprite改名字,

6、在工程面板中,将新定义的图集New…整理到font&

Atlas文件夹中,如下图。

四、背景引入和自适应分辨率背景缩放

1、利用NGUI菜单创建create->

widget。

层级面板会生成UIroot

2、继续创建一个create->

panel,默认参数设置即可,panel下创建一个sprite,sprite可添加背景图片(前提是事先做好了NGUI图集),参数如下。

选择图集中的背景图片bg

选择自定义的图集,即自己制作的图片集合,看上一点说明

其中size默认即可,Anchors下的Type选择Unified,并设置Target为UIroot,left,Right,Bottom,Top均设置为+0

五、字符集制作——引入中文字符

在进行Unity项目中我们使用了NGUI进行UI模块的开发。

那么我们如何使用自定义的字库呢?

这里Forward就对NGUI自定义字体制作流程做一个小结。

1、我们在自己的测试场景TestScene中添加一个空的GameObject,这里我们把它命名为FSFont,如下图所示:

图1

2、为FSFont中添加UIFont组件:

图2

3、在FSFont中需要注意的一点是FontType要选定为Dynamic类型,如图3:

图3

4、提前将我们的目标字体添加到工程中的font&

Atlas,这里我们选择使用微软雅黑。

图4

5、为我们创建的FSFont选择字体ttf文件,如下图所示:

图5

6、将我们编辑好的FSFont生成Prefab留待项目使用(2种方法,第一种是直接将设置好的FSFont拖动到左侧的工程面板中;

第二种是在工程面板中右键create->

prefab,会在工程面板生成newprefab对象,将左侧FSFont拖动到此Prefab对象上即可):

图6

好了,有了上面的简单操作,我们就得到了目标字体的Prefab,那么到底效果如何呢?

我们使用NGUI在场景中创建一个Label,在Label的Font中选择自己的FSFont:

图7

运行效果如下:

图8

备注,如果出现字符错误,则重新加载下字符集

GUI控件

1、GUI代码需要在OnGUI函数中调用才能绘制,如果放在Update函数中会有错误提示。

2、Rect参数:

GUI的控件-般都需要传入Rect参数来指定屏幕绘制区域。

例Rect(0,10,300,200)对应的屏幕矩形区域左上角的坐标为(0,10),宽度为300,高度为200。

3、屏幕坐标:

在UnityGUI中,屏幕坐标系以左上角为原点(0,0),右下角为(screen.Width,

screen.Height),其中screen.Width为屏幕宽度,screen.Height为屏幕高度,以像素为单位。

这点与Input.mousePosition的鼠标位置不太一样。

对于mousePosition,屏幕左下角为原点(0,0),屏幕有上角为(screen.Width,screen.Height)。

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

当前位置:首页 > 医药卫生 > 预防医学

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

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