U3D学习笔记

Posted 说笑谈古松

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了U3D学习笔记相关的知识,希望对你有一定的参考价值。

第二课
新建项目
打开Unity,在Project面板上输入"project name"(项目名称);
然后在“Location"中选择本地储存位置;
选择3D模式;
点击”Create Project"按钮,即可完成创建。

perfabs 预制体 Materials材质球 Textures贴图 Scenes场景 Assets资源文件夹

scene面板:场景面板
Project面板:项目面板
Hierachy面板:层级面板,用于显示当前场景中有哪些资源。在这个面板中可以往场景中添加资源。
Inspector:监视面板(属性面板)。用于查看和编辑游戏物体和项目资源的具体信息。

创建基本3D物体
Hierachy面板点右键–>3D Object–>Cube
Cube立方体 Sphere球体 Capsule胶囊体 Cylinder圆柱体 plane平面

工具栏功能演示:
手型:平移场景的观察视角
箭头:移动物体位置
旋转:旋转物体
缩放:缩放物体

Assets中创建文件夹:点击右键,弹出菜单–>Create–>Folder,然后改名。

第三课
世界坐标系:
X(红色):右边
Y(绿色):上边
Z(蓝色):前边

物体坐标系:
X(红色):右边
Y(绿色):上边
Z(蓝色):前边
世界坐标观察模式:
Persp:透视模式,近大远小。
ISO:正交模式,远近一样大。

第四课
材质球(Material):
贴纸:Texture
创建材质球:
在Assets中的Materials文件夹上,右键弹出菜单—>CreateMaterial,完成材质球的创建。后缀是“。mat”。

空物体:
Hierarchy面板右键Create Empty创建一个空物体。
管理预制体:
在Assets中建立“Prefaba”文件夹,用于管理预制体。
创建预制体:
直接将Hierarchy面板中的游戏物体拖拽到Project面板的Assets中。
Apply同化预制体 select查找预制体
第六课
Tiling:设置分块显示
GameObjectAlign With View(ctrl+shift+F)摄像机对其视图。
创建摄像机:Hierarchy面板右键—>Camera.
摄像机相关属性:
Clear Flags[清楚标签]
Skybox:天空盒
Solid Color:固定颜色(纯色)

第七课
灯光Light
方向光:Directional Light
Hierarchy面板右键LightDirectional Light
Type切换灯光的类型
Intensity设置灯光的照射强度
Shadow Type阴影类型
点光源:Point Light,用于模拟电灯泡的照射效果。
创建点光源:Hierarchy面板右键—>Light Point Light
Range【范围】
聚光灯:Spot Light,用于模拟聚光灯照射效果。
创建聚光灯:Hierarchy面板右键Light—>Spot Light

第八课
Transform组件:
Position坐标系 Rotation旋转 Scale缩放
C#脚本:
脚本:S承认皮特,用于控制游戏的逻辑。
管理脚本:
在Assets文件夹中创建“Scripts”文件夹,管理脚本资源。
创建脚本:
在Ass额头上文件夹上右键CreateC# Script,马上改名。后缀为“.cs”
双击脚本文件,就可以调出“代码编辑器”进行代码的显示。
脚本代码简介:
Start()方法:当游戏运行起来,就会马上执行,且只执行一次。
Update()方法;循环调用,每帧调用一次,一秒钟大概执行一次。
帧:我们的游戏画面在不停的刷新,每刷新一次,就是一帧。
输出调试:Debug.Log();
Start()和Update()方法都是Unity3D内部的“事件方法”,不需要我们人工调试,系统会自动调用和管理这些“事件方法”。
使用脚本;

  1. 直接将脚本拖拽到Hierarchy面板上物体身上;
  2. 直接将脚本游戏物体的Inspector面板上;运行游戏,脚本就会执行。
    Console面板
    Console:控制台。用于输出显示游戏运行过程中的调用信息。
    功能按钮:
    Clear:清除功能,清除控制台中的信息;
    Collapase:折叠功能,将相同的内容合并到一条显示,更新后面的数字;
    Clear on Play:运行时清除之前的内容;

第九课
获取键盘输入
1、 相关代码
Input.GetKey(); //按下某键后,持续返回true
Input.GetKeyDown(); //按下某键的一瞬间,返回true
Input.GetKeyUp(); //抬起某件的一瞬间,返回true
返回值:bool类型
参数:KeyCode枚举(Enum)
KeyCode:见吗,保存了物理键盘按键“索引码”

获取键盘输入
1、 相关代码
Input.GetMouseButton(); //按下某件后返回true
Input.GetMouseButtonDown(); //按下某键的一瞬间,返回true.
Input.GetMouseButtonUp(); //抬起某键的一瞬间,返回true.
返回值:bool类型
参数:鼠标按键索引值,0->右键,1->右键,2->中键。

第十课
变换组件移动物体
GameObject.GetComponent();获取相应组件的引用。
查找当前游戏物体身上的某个组件,然后保存它的引用。
Transfrom.Translate(Vector3,Space):移动物体的位置。
游戏物体往某个方向移动;以自身坐标系或世界坐标系。
相关参数
Vector3[struct]:三维向量。
向量,可以代表一个方向,也可以代表一个位置。
Space[enum]:空间。
Space.Self:表示物体自生的坐标系。
Space.World:表示物体所在世界坐标系。
键盘控制移动方向
查使用键盘上的“W,A,S,D”来控制游戏物体的前后左右移动。
第九课
变换物体运动特点
使用Transform.Translate()方法移动物体的位置,特点如下:
1、 移动的物体会“穿透”场景中其他的物体模型。
2、 移动的物体不会受重力影响(到达场景边缘,不会下落)。

刚体组件简介
刚体:Rigidbody,属于物理类组件。
作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意味着可以像现实中的物体一样运动。
给物体添加刚体组件
选中游戏物体菜单Component—>Physics—>Rigidbody
刚体组件属性
1、 Mass[质量]
设置物体的质量,也就是重量。质量单位时KG。
2、 Drag[阻力]
空气阻力,0表示无阻力,值很大时物体会停止运动。
3、 Angular Drag[角阻力]
受到扭曲力时的空气阻力,0表示无阻力,值很大时物体会停止运动。
4、 Use Gravity[使用重力]
是否使用重力。
使用刚体移动物体
方法:Rigdbody.MovePosition(Vector3):使用刚体移动物体的位置。
使用刚体移动物体,物体时根据世界坐标系的方向移动。
使用刚体移动物体,物体会触发物理相关的事件。
参数:MovePosition中的Vector3要使用“当前位置”+方向的方式。
Transform.Position:属性 当前物体的位置。

第十二课·
碰撞体(Collider)
使用刚体移动的物体,与场景中其他的物体相碰撞:
其实是碰撞的目标物体的“碰撞体”组件,也就是Collider.
另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体“组件。
碰撞体可以理解为我们的模型的“外骨骼“。
模型只要加了刚体,就必须要加碰撞体,否则没有意义。
给物体添加碰撞体组件
选择游戏物体菜单ComponentPhysicsXxxx Collider
(我们在Unity中创建的基本模型,自身都带有碰撞体组件)
Box Collider
盒子碰撞体,形状是立方体形,用于包裹类似“立方体“的模型,比如:盒子,箱子,门,房子等。
组件属性
Center[中心点]
设置Box Collider 的中心点。
Size[大小]
Sphere Collider
球形碰撞体,形状是球形,用于包裹类似“球形“的模型。
组件属性:
Radius[半径]
设置Sphere Collider的大小。
Capsule Collider胶囊碰撞体
组件属性:
Heiht[高度]
Direction[方向]控制高度方向。
Mesh Collider网格碰撞体
组件属性:
Mesh [网格]根据指定的网格,生成碰撞体。

第十三课
AddForce()
作用:给刚体添加一个力,让刚体按“世界坐标系”进行运动。
代码:
Rigidbody.AddForce(Vector3,ForceMode);
Vector3:力的方向和大小。
ForceMode:里的模式[enum类型]
ForceMode参数
类型为枚举类型,以什么样的方式添加力给刚体。

枚举值说明:
Asseleration:加速度;
Force:(力)这种模式通常用于设置真实的物理;
Impulse:(冲击力)这种模式通常用于瞬间发生的力;
VelocityChange:速度的变化
FixedUpadate()
固定更新方法。
所有和物理相关的操作,代码都要写在FixedUpadate()方法内。
固定更新的时间间隔是0.02秒,1秒执行50次。
Edit–.>Project Settingstime面板中的Fixed Timestep参数设置。
Update()方法是每帧执行一次。
画面每渲染一次,就是一帧,每帧的时间是不固定的。
在Update()方法中执行物理操作,会出现卡顿现象。

第十四课
何为碰撞事件
当一个用刚体控制的物体与另一个物体碰撞时,就会触发碰撞事件。
注:目标物体必须带有Collider组件。
碰撞 Collision
比如,一款射击类游戏,我们发射出了子弹,子弹时一个由刚体控制的物体,子弹射中了敌人,我们如何监测到这个碰撞??
碰撞事件监测方法
OnCollisionEnter(Collision)
当碰撞开始时调用,只会调用该方法一次。
OnCollisionExit(Collision)
当碰撞结束调用,只会调用该方法一次。
OnCollisionStay(Collision)
当碰撞进行时,会持续调用该方法。
Collision参数
碰撞,一个类。作用:用于传递碰撞信息。
Collision.gameObject属性,与当前物体碰撞的物体的引用。
gameObject.name属性,当前物体的名称。

第十五课
触发事件简介
触发器:将碰撞体组件属性板上的“Is Trigger” 选项中,当前游戏物体的碰撞体就变成了触发器。
移动的刚体会穿透碰撞体勾选了“Is Trigger”的物体。
触发事件
当一个用刚体控制的物体进入到另一个物体触发器范围内,就是触发事件。
触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的触发范围”就能执行某些特定操作。
触发事件监测方法
OnTriggerEnter(Collider)
当进入触发范围时开始调用,只会调用一次。
OnTriggerExit(Collider)
当离开触发范围时开始调用,只会调用该方法一次。
OnTriggerStay(Collider)
进入到触发时,会持续调用该方法。
Collider参数
碰撞体,一个类。作用:用于传递触发信息。
Collider.gameobject属性,进入触发范围内的目标物体的引用。
gameObject.name属性,当前物体的名字。

第十六课
网格过滤器组件
网格过滤器(Mesh Filter).
该组件只有一个”Mesh“属性,用于设置当前游戏物体使用那个模型进行展示。
Mesh:网格,也就是模型。
Cast Shadows[投影阴影]
On:开启阴影显示
Off:关闭阴影显示。
Receive Shadows[接收阴影]
选中就是接收。
不选中就是不接收。
Materiais[材质球]
用于设置用于哪个材质球渲染当前的模型(Mesh)。
我们拖拽到游戏物体身上的材质球,其实就是赋予了这个组件的这个属性上。

第十七课
模型旋转实现开门效果
模型中心点:
模型身上的坐标轴的中心点,也就是我们模型的中心点。
模型的位置,旋转,缩放都是相对于模型的中心点来进行变化的。
改变模型中心点:
创建一个空物体,窗机爱你父子关系,通过父物体来控制子物体。
也就间接的改变了模型的中心点。
中心点工具:
Center:当选中两个模型的时候,设置为”Pivot”,模型组的中心点就在两个模型的中间中心位置。
Pivot:当选中两个模型的时候,设置为”Pivot”,模型组的中心点就在后选中的模型的中心点位置。
使用键盘按键实现开关门:
使用Transfrom.Rotate(Vectate,float)旋转模型:
Vector3:沿某个轴向旋转。
Float:旋转的度数。
触发器实现开关门:
添加触发器:
创建一个空物体,添加“Box Collider”组件,并设置大小和中心点。
将”Box Collider”勾选“Is Trigger“变成触发器。
用代码实现触发器的开关门:
OnTriggerEnter()
OnTriggerExit()
查找游戏物体:
GameObject.Find(string):【静态方法】通过名字查找游戏物体
String 游戏物体的名字

第十八课
通过Tag标签查找物体
Tag标签就是一个标签。标签可以起到表示,区分的作用。
同一类的模型,我们可以根据需要给他们设置成统一的标签。
给模型添加Tag标签:
选中一个模型,在模型的Inspector面板中的顶部位置,设置Tag选项为一个具体标签。
如果说引擎提供的标签没有自己想要的标签。可以自己手动添加新标签。
通过Tag标签查找N个物体:
GameObject.FindGameObjectsWithTag(string):[静态方法]、
通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个游戏组。
String:标签名。
For循环输出模型信息:
通过for循环遍历FindGameObjectsWithTag()方法返回的数组,输出游戏物体的信息。
通过按键盘实现说一跳动:
按下某键,桌椅全部上移2米;
抬起某键,桌椅全部下移2米;
触发器实现桌椅跳动
创建触发器
在桌椅的范围内,创建一个空物体,然后添加Box Collider,并调整大小。最后勾选“Is Trigger”属性。
使用触发器实现桌椅跳动
OnTriggerEnter() OnTriggerExit()
第十九课
游戏打包发布简介:
现在的项目文件必须在Unity引擎中才能运行,通过“打包发布“可以将工程文件转换成独立的”游戏文件“,就可以脱离Unity引擎直接在电脑上运行。
打包好就可以到处发布传播了。
Unity发布游戏:
Unity的最大的特点就是“跨平台运行“,一处开发多处运行。
常用的发布平台:Windows,android,ios,Mac,Web….

Unity发布PC版游戏
Build Settings【生成设置】:
File—>Build Settings 弹出项目生成设置面板。
选择要发布到的平台;
添加要发布的场景;
Settings【详细设置】
Company Name;公司名称
Default Lcon:默认图标、
成品文件介绍:
一个exe可执行文件,一个Date数据文件夹,两个缺一不可,且不可分割。

以上是关于U3D学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

U3D如何让物体旋转一定角度

U3D学习笔记

U3D学习笔记

U3D前后端开发知识体系

u3d 鼠标点击位置,物体移动过去。 U3d mouse clicks position, objects move past.

U3D外包团队—技术分享 U3d中获得物体的size