unity3d 英保通公开课小结 1-38讲

第二讲:Unity资源管理【持续更新中】

2.1 Unity 资源及资源类型

2.2  模型和角色动画的输出设置

2.3  材质和着色器

2.4  2D 纹理和 Moive纹理

2.5  声音文件

2.6  Asset Store( 资源 Store)

2.7  Prefab( 预设 )

2.8  Project视窗搜索功能

2.9  资源输入原理( metadata )

第三、四讲:模型和角色动画的输出

【模型】

* 模型主要可以以两种方式进行输出:

1. 使用插件进行输出。并输出为指定的文件格式,如FBX或OBJ。

2. 直接输出为相应的3应用文件,如.max或Blend,Unity自身再进行转换。

* 使用3D软件自身格式进行输出:

优点:

1. 快速的输出过程,直接从3D文件到Unity

2. 简单的初始化过程

不足:

1. 文件中可能会包括不需要的数据;

2. 若输出文件过大,可能会妨碍Unity的更新过程;

3. 比较少的数据校验过程,可能会增加出错几率。

* 使用插件进行输出:

优点:

1. 仅仅输出你需要的数据;

2. 验证数据;(在导入Unity中之前,可以重新输入回3D软件对数据进行验证);

3. 产生比较小的文件;

4. 可以使用模块化的方法,即一模块可以用于碰撞,而另一输出的模块可以用于交互。

5. 对于其他Unity不支持的3D软件的专有格式,可以使用插件。

不足:

1. 整个输出导入过程可能会反复;

2. 输出版本不容易控制(比如输出多个版本的FBX)。

【动画】

* 两种动画的输入方式:

1.第一种方式:我们从三维软件中输出一个单个的模型文件,但此文件中包含有所有的动画片段,在输入到Unity中后,根据各个动画片段的帧范围来分割出动画片段;

2.第二种方式:在三维软件包中,我们不需要一次性创建所有的动画片段,而是输出为多个模型文件中,每个模型文件中只包含有一个动画片段,如Idle,Run,Walk等,此时不得不输出多个文件,这时要把这些动画片段输入到Unity中,还需要遵循一定的命名规范:例如,我们输出一个名称为Heroine_animate的不带有任何动画片段的基本的FBX模型文件,然后我们再输出一个包含有idle名称为[email protected]的动画片段,以此类推,这样在Unity中才能恰当的使用它们。

第五讲:资源管理:材质和着色器

1. 纹理尺寸应该是2的幂次方;

2. 材质是基础,然后可以把纹理加载到材质上,然后加载到物体上;

3. 材质?---着色器模型?--纹理。

第六讲:资源管理:2D纹理和Movie纹理

【2D纹理】

Gui纹理显示:Texture2D

1.Function OnGui()

{//绘制

}

2.Resources.Load(“路径”)和Resources.LoadAll()方法//加载资源

3.GUI.DrawTexture()//绘制

【Movie纹理】

Movie纹理的格式:

1. Movie纹理是从视屏文件中产生的一系列动画纹理,用户可以像平常资源一样将其放置在Asset资源文件夹中进行导入;

2. Movie纹理是通过Apple Quick Time导入的,因此凡是Quick Time支持的格式,Movie纹理都可以支持:.mov,.mpg,.mpeg,.mp4,.avi,.asf;

3. 当一个视频文件添加到项目中时,他会被自动输入并被Unity转换为Ogg Theora格式,然后可以像普通纹理那样进行使用。

第七讲:资源管理:声音文件

1. 声音文件可以直接拖拽添加;

2. 声音产生和监听要添加Audio Source组件(声源)和Audio Listener组件(一般为摄像机);

3. 2D声源监听效果与距离无关,3D声源离声源越近声音越清晰;

4. audio.Play(Stop,Pause,PlayOneShot)函数操作。

第八讲 资源管理:Asset Store(外部资源库)

1. 关键字搜索资源;

2. 下载资源;

3. 查看、更新以前下载的资源;

4. 下载的资源路径:c/用户/AppData/Roaming/Unity/Asset Store

第九讲 资源管理:Prefab(预设)

1. 实例继承性:修改Assets中属性,实例化的物体中属性也会相应改变;

2. 实例重载:可以单个修改实例化的物体;

3. 选择实例:select

4. 取消重载:Revert

5. 预设,空的预设和资源图标不同,本质也不同。

6. 实例化:Instance()

第十讲:资源管理:Project视窗搜索功能

资源文件管理,创建资源,搜索资源。

Favorites 快速访问:

1. 拖拽文件夹;

2. 添加搜索结果。

搜索:

1. 搜索指定类型资源;

2. 搜索标签;

3. 保存搜索结果。

第十一讲 资源输入原理

资源使用和管理:

添加到文件夹中时,unity自动输入资源并管理:

1.对已有资源建立链表;

2.添加新文件时,自动对比链表以发现新文件,为新文件添加唯一id号

3.处理是对文件做转换,放置于library文件夹中。

4.对文件的操作要在unity里边做,不能拿出来在windows文件夹中做,以防出现文件不符合的问题。

第十二讲 场景创建:游戏物体与组件

开始的游戏物体都是基础物体,将组件添加到基础物体上使其获得属性以成为可以使用的物体。

组件作用:为相应物体增加相应的功能效果。

组件属性:数值属性和引用属性。

组件顺序:影响影像效果。

第十三讲 场景创建:属性编辑器的使用

预设,层次,场景中的物体在属性编辑器中修改、

属性:数值属性,引用属性。

数值属性:直接修改文本框;动画曲线,颜色间层使用相应编辑器。

引用属性:直接用拖放的方式操作。

Ps:

1.可以选择多个相同类型物体同时编辑共同属性,不同属性显示横线;

2.多个相同预设实例物体不可以多重编辑,但可以单个对预设重载;

3.编辑器模式:normal,debug[易于调试],lock[锁定]

第十四讲 场景创建:场景视图操作

场景浏览:

1.用箭头键移动摄像机,按住shift键加速移动速度;

2.层次视图中,选中物体,在场景视图中用F键,将其设为场景中心;

3.Alt+左键:旋转;Alt+中键:移动;Alt+右键:放缩。

4.飞行模式[透视]:按住右键,wsad上下作左右移动,qe上下移动,右键拖动旋转。

5.正交视图和透视视图切换

定位物体:

1.移动,旋转,缩放

2.单位吸附[snap]:ctrl+移动

3.表面吸附:shift+ctrl+移动,会在表面移动

4.顶点吸附[顶点对齐]:按住v键,用鼠标左键选择要吸附的顶点并移动

5.设置图标:属性框中修改,可设置自定义图标

第十五讲 场景创建:灯光和摄像机

灯光:颜色和基调

1.可以将灯光当成一个组件

2.改变灯光颜色来改变场景基调

3.灯光:实时灯光、灯光贴图

4.根据不同平台不同需要设置相应的渲染路径

5.灯光:点灯光、聚光灯、方向灯、区域灯光[灯光贴图]

摄像机:

1.可以实例化;

2.多个摄像机处理

3.场景中空白部分的处理

第十六讲 unity脚本使用:脚本及变量

创建脚本:create edit-》create

脚本内容:start()只执行一遍,update()实时循环操作[每一帧]

1.脚本必须依附在物体上;

变量:实时测试不同变量的效果,提高重用性;

1.播放时的数值修改不会保存,需要在停止播放后再次修改;

2.对不同物体中重用脚本,变量使不同物体产生不同的效果;

第十七讲 unity脚本使用:游戏对象组件访问

公共组件:transform,rigidbody,摄像机,动画可以直接用“.”

脚本:通过getcomponent()调用别的脚本

第十八讲 unity脚本使用:游戏对象访问操作控制

引用物体以及其他物体的脚本:

1.定义公有变量,在属性编辑器将对应的物体或物体所在的脚本拖动赋值;

2.GameObject.Find()函数:通过物体的名称,或路径来查找场景中的物体。

3.GameObject.FindGameObjectWithTag()函数:通过物体的标签获取物体

第十九讲 unity脚本使用:脚本时间控制

1.Time.deltaTime:根据时间固定变化,每秒改变,而不是每帧时间

2.Time.time:当前的时间

3.Time.deltaTime :上一帧所消耗的时间

4.Time.fixedTime :固定增量时间

5.Time.fixedDeltaTime :固定增量间隔时间

6.Time.smoothDeltaTime :平滑DeltaTime

7.Yield语句:Yield语句是一种特殊类型的Return(返回)语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。

Eg:yield WaitForSeconds(5.0);  后续部分延迟5s执行

第二十讲 unity脚本使用:随机数的使用

Random类:

1.Random.value:0--1之间的随机数

2.Random.Range():指定的范围

第二十一讲 unity脚本使用:C#脚本编写

1.声明定义变量

js:public var i:int=0;

C# :public int i=0;

2.使用函数

Js:Function SetInt(temp:int)

{

i=temp;

}

Function getInt():int

{

return  i;

}

Var obj:GameObject ;

Obj=GameObject.Find(“Cube”);

Var script:jsTest=obj.GetComponent(“jsTest”);

Script.setint(50);

Debug.log(Script.getint());

C# :public void Setint(int temp )

{

I=temp;

}

Public int getint()

{

Return i;

}

cTest  script =obj.GetComponent<jsTest>();

第二十二讲 unity脚本使用:物体间通信方式

1.父物体和子物体间

GameObject.SendMessage:向自身的脚本中发送消息

GameObject.BroadcastMessage :向自身及子物体的脚本中发送消息

GameObject.SendMessageUpwards:向自身及父物体中发送消息

2.事件发送和接收

发送:

委托:public delegate void EventHandler(GameObject e);

事件:public event EventHandler MouseOver;

对事件定义:

void OnMouseOver () {

if (MouseOver != null)

MouseOver (this.gameObject);

}

接收:

EventDispatcher ev=GameObject.Find(“cube”).GetComponent<EventDispatcher>();

Ev.MouseOver+=ListeningFunction;//注册监听器

//监听函数

void ListeningFunction (GameObject e) {

this.transform.Rotate(20, 0, 0); // ‘e‘ is the game object that dispatched the event

//    e.GetComponent<EventDispatcher>().MouseOver -= ListeningFunction; // Remove the listener

Debug.Log("mouse is over: "+e);

}

第二十三讲 GUI图形用户界面:unityGUI原理介绍

OnGUI():

1.每帧执行一次

2.定义UI即为创建UI

3.可以像普通物体那样控制UI,例如Time

4.一般用Rect限制按钮的大小

5.可以在规定的按钮上添加指定文字,图片;甚至图片+文字+提示『GUIContent』

Eg:

Function OnGUI()

{

If((Time.time %2)<1)

{

if(GUI.Button(Rect(10,10,120,110),GUIContent(“我的按钮”,“提示”)))

{

Print(“用户单击了按钮”);

}

}

}

第二十四讲 GUI图形用户界面:常用控件及使用

1.标签:显示信息

GUI.Label();

2.按钮:可以单击

GUI.Button();

3.重复按钮:按住后内容持续执行

GUI.RepeatButton();

4.文本输入框:可以输入变量并引用

GUI.TextField();

5.开关控件:表达是否选中『bool』

GUI.Toggle();

6.滑块控件:

水平滑块:GUI.HorizontalSlider(Rect(),当前位置,开始位置,最远位置);

第二十五讲 GUI图形用户界面:复合控件及使用

1. 工具条控件:模拟工具栏效果,每次只一个按钮激活,且一直保持到激活其他按钮为止

参数变量:

标记工具条当前激活的按钮[int];

当前按钮数目以及按钮名称[string[]];

2. 选择网格控件[效果和工具条类似,但是可以分列]:

参数变量:

标记工具条当前激活的按钮[int];

当前按钮数目以及按钮名称[string[]];

列数[int].

3. GUI.changed():若是某些控件发生了更新,可以对某些控件进行检测

第二十六讲 GUI图形用户界面:群组视图控件及使用

1. GUILayout:可以自动调整控件大小

2. 使用组:

GUI.BeginGroup(Rect());

GUI.EndGroup();

组可以互相嵌套,产生子组:可以实现类似能量条的效果

第二十七讲 GUI图形用户界面:GUI Skin及创建自定义风格组件

1. 使用默认显示风格:

2. 使用自定义的GUIStyle

GUI.Button(Rect(),”名称”,”box”);

3. 使用GUISkin:多个GUIStyle的集合

GUISkin skin=myskin;//直接在前边说明,后边控件的皮肤都是这个

GUISkin skin=null;//此后的皮肤都为默认皮肤

第二十八讲 GUI图形用户界面:GUILayout控件及其使用

GUILayout控件:

1. 自动布局的控件

2. 可以创建GUI包含的控件

3. 默认垂直布局

4. 若要水平布局:GUILayout.BeginHorizontal();GUILayout.EndHorizontal();

5. 滑动条要与别的控件间产生间距:GUILayout.Space(120);并指定控件的固定宽度和固定高度。

GUILayout.HorizontalSlider(sliderValue,0.0,10.0,GUILayout.Width(100));

6. 控件组/容器:GUILayout.BeginArea();  GUILayout .EndArea();

第二十九讲 GUI图形用户界面:动态窗口添加及使用中文字体

1.创建窗口:

windowRect=GUI.Window(0,windowRect,DoMyWindowFunction,”我的窗口”);

Function DoMyWindowFunction(windowID :int )//窗口函数

{//创建窗口控件

GUI.DragWindow(Rect(0,0,10000,10000));//范围内可拖动

}

2.可以使用toggle控件控制窗口的显示或关闭

第三十讲 地形引擎介绍:地形创建

创建地形:create Terrain

第三十一讲  地形引擎介绍:地形绘制

1.第一项  抬高降低工具。选择地形样式,点击拖动鼠标,可以抬高地形;按着shift键,可以创建凹陷效果【在突起地形可以实现,也可以抬高地形,再实现凹陷效果】。

1.第二项  绘画高度选项。可以选择笔刷,绘制的高度不能超过hight参数,否则会平整掉。

2.第三项  平滑高度选项。对尖锐部分操作,可以产生平滑效果。

第三十二讲  地形引擎介绍:地形纹理绘制

1.第四项  绘制纹理。

① 导入标准地形资源

② 添加纹理,纹理同时平铺于整个地形中[基础纹理]

③ 添加其他纹理,在基础纹理上添加相应的效果。

第三十三讲  地形引擎介绍:添加树木,植被等地形元素

1.第五项  添加树木

1) 添加树木

2) 点击ctrl拖动鼠标,可以删除指定树木;点击shift拖动鼠标,将删除所有拖过的树木。

2.第六项  添加植被等细小的物体

1) 添加植被

2) 点击ctrl拖动鼠标,可以删除指定细节;点击shift拖动鼠标,将删除所有拖过的细节。

3) 可以添加纹理,也可以添加实体

4) 拉近摄像机镜头才可以看到草的效果

第三十四讲  地形引擎介绍:地形设置及公路效果创建

1.第七项 地形设置

① 基础地形

② 树及细节纹理

③ 风的设置

④ 地形碰撞器

2.公路创建  easyRoads3D插件

1) 添加公路标记shift+鼠标左键

2) 插入公路标记

第三十五讲  输入与控制:输入管理器与虚拟轴定义

1.输入管理器

Edit->Project Settings->Input.

2.获取虚拟轴

Input.GetAxis ("Vertical")   上下箭头,w,s按键

第三十六讲  输入与控制:虚拟轴应用及键盘事件

汽车驾驶效果

1. var translation : float = Input.GetAxis ("Vertical") * speed;

键盘事件

2. if (Input.GetKey ("a")) {

print ("a键被按下");

}

3. if (Input.GetKeyDown ("b")) {

print ("b键被按下一次");

}

4. if (Input.GetButton ("Fire1")

Print(“按下开火按钮”);

第三十七讲  输入与控制:鼠标事件与GUI系统双击检测

鼠标事件

1.if(Input.GetMouseButtonDown(0))

Debug.Log("您在_"+Time.time+"时,按下了鼠标左键");

if(Input.GetMouseButtonDown(1))

Debug.Log("您在_"+Time.time+"时,按下了鼠标右键");

if(Input.GetMouseButtonDown(2))

Debug.Log("您在_"+Time.time+"时,按下了鼠标中键");

2. if(Input.GetMouseButton(0))

Debug.Log("您一直按着鼠标左键");

3.   if(Input.GetMouseButtonUp(0))

Debug.Log("您在_"+Time.time+"时,抬起了鼠标左键");

if(Input.GetMouseButtonUp(1))

Debug.Log("您在_"+Time.time+"时,抬起了鼠标右键");

if(Input.GetMouseButtonUp(2))

Debug.Log("您在_"+Time.time+"时,抬起了鼠标中键");

GUI系统双击检测

function OnGUI()

{

var e : Event = Event.current;

if (e.isMouse&&(e.clickCount==2)) {

Debug.Log("用户双击了鼠标");

}

}

第三十八讲  角色控制组件:第一人称角色控制器及CharacterController组件

第一人称角色控制器:

1.CharacterController:设置角色爬坡的角度,步高[每步可以抬高的高度]

2.Mouse Look:调节视角

3.Character Motor:实现更精确功能:移动物体上运动,滑动等

4.FPSInput Controller:获取输入

unity3d 英保通公开课小结 1-38讲

时间: 2024-10-03 09:53:20

unity3d 英保通公开课小结 1-38讲的相关文章

maven3+struts2+spring3+jpa2重构itcat巴巴运动网(前38讲)

和maven官方例子一样,我学习教程也采用了父工程来管理各个阶段尝试不同的开源组件开发的模块. \babasportrefactoring为父工程 \babasportrefactoring\babasportbluetripe为参考struts官方例子后重构的代码,同步更新到38讲: \babasportrefactoring\babasportcompact 为清理了非必要测试的子model2,Spring3.05 + Strtus2 + JPA(Hibernate) + Sitemesh

Unity3D教程宝典之光影烘焙:第二讲AreaLight

Area Light,俗称面灯.没有任何实时光照的效果,仅用于Light baking即烘焙.创建一个Area Light,界面如下 Color:颜色Intensity:强度,Width:宽Height:高 Scale缩放对光没有任何影响.主要是宽高调整面的区域大小.选中Arealight后,Arealight的区域会在Scene窗口中以黄线框显示,AreaLight的Z轴指向的方向即光照的方向. 用AreaLight烘焙室内灯光效果(1)创建一个空场景(2)创建Cube并缩放成扁平面后.复制C

Unity3D教程宝典之光影烘焙:第一讲光影烘焙

引言:光影烘焙,英文叫Lightmapping 或 light baking.Unity自带了Lightmapping的功能(是Illuminate Labs出的名为Beast的产品).本系列教程分为4讲:第一讲 光影烘焙第二讲 AreaLight第三讲 Light Probes第四讲 脚本控制其中第三第四讲讲解的是动态物体与烘焙后场景的融合.             光影烘焙 打开方式 Window – Lightmapping有几点需要注意:1.所要烘焙物体的mesh 必须要有合适的ligh

【我们都爱Paul Hearty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡

之前我们接触过了segue,这是IOS中最基本的传递方式,今天来讲解一下如何进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创造新的MVC的过渡方式,它有下面两个适用场景: 1很适合在navigationController的栈中使用进行跳转. 2关闭一个使用modal Segue生成的MVC. 和其他的segue不同,不需要拖拽连线,直接拖拽需要点击反向过渡的控件到场景顶部的小门形状的按钮,就可以在其中选择我们在目标MV

Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片

转载自风宇冲Unity3D教程学院                                    从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容至Unity3d程序中. 往wamp路径下的www文件夹下拖入一张图片,这里使用的是cat.jpg, 输入http://localhost/cat.jpg,可以查看到图片如下后, 新建unity工程,创建一个球体,创建一个任意名称材质,并赋予该材质至球体.创建一个名为GetImage的脚本,代码如下,

Unity3D教程宝典之Shader篇:第二讲Fixed Function Shader

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 Fixed function shader简介:  属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的情况.使用的是ShaderLab语言,语法与微软的FX files 或者NVIDIA的 CgFX类似. 例一:显示单一颜色下面我们来看第一个例子,显示单一颜色,注释写得挺详细了,照着格式写即可. //根Shader Shader "Custom/1_1color" { // 属性 Propertie

Unity3D教程宝典之Shader篇:特别讲 CG函数

转载自风宇冲Unity3D教程学院 特别讲:CG函数 本讲不需立刻看完,遇到相关函数时来查阅即可.(本文截图来源:Cg教程_可编程实时图形权威指南) E.1  数学函数 E.2 几何函数 E.3 纹理贴图函数 E.4 导数函数 E.5 调试函数 E.1  数学函数 E.2 几何函数 E.3 纹理贴图函数 E.4 导数函数 E.5 调试函数

Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设

转载自风宇冲Unity3D教程学院 引言:本文主要介绍WAMP服务器的架设. 第一部分WAMP介绍;第二部分WAMP安装及使用.                        第一部分WAMP介绍 什么是WAMP,什么是LAMP? WAMP,即Windows + Apache + Mysql + PHP,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台. LAMP,即Linux + Apa

Unity3D教程宝典之Shader篇:第一讲Shader总篇

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 引言,在Unity3d里,所有的图形绘制都必须通过Shader,即着色器.一般的使用过程中,我们用到的都是unity自带的Shader,即build-in shader.学习Shader后,自己写的Shader能做出很多你想要的特殊效果,增强游戏的画面表现.例如 水的倒影. LOGO的光影闪过等等效果等等. Shader的分类 Shader按管线分类一般分为固定渲染管线与可编程渲染管线 1)固定渲染管线 ——这是标准的几何&光照(Tra