Unity3d 要点板书

WWW.unity3d.com.cn

Unity Project  unity的项目文件/专案

Scene  unity的场景文件

Scene 场景视窗

Game 预览视窗

H.. 物件视窗

Project项目/专案管理视窗

I.。。。。属性栏(监测视窗)

材质 MeshRenderer

组件

第三人称控制器自动捕捉的是带有MainCamera标签(tag)的摄像机

 

子文件夹含有Assets文件夹 unity项目文件

 

aaa.Unity Scene File    unity场景文件

 

aaa.UnityPackage    unity资源(可导入到unityProject视窗)

 

Fbx格式为unity支持模型格式

Unity中最节省资源的图片格式为PNG

 

投影遮罩

点光源投影遮罩图片需要是CubeMap

 

点光设置实时影子

 Edit->ProjectSettings->Player

                        File->BuildSettings –>PlayerSetting

                            ->OtherSettings->RenderingPath->DeferredLighting

点光烘焙影子

                            RenderingPath->forward(在场景中看不到实时影子效果

但是,在LightMapping中烘焙之后影子即可显现出来)

 

平行光不能直接添加太阳光效果,必须通过组件的方式

Component->Effets->LensFlare

 

静态物体的影子只能投放在静态物体身上

 

天空盒 Edit –> RenderSettings  找到SkyboxMaterial

正交摄像机(没有透视关系)用于小地图

 

 

11.6  

光源侦测

  1. 1.      任意选择场景中的物体,添加光源侦测组件

Component –> Rendering –> LightProbeGroup

  1. 2.      添加侦测小球AddProbe
  2. 3.      烘焙LightMapping

注意:设置静态Static

烘焙两次第一次烘焙侦测小球BakeProbes

           第二次烘焙场景BakeScene

  1. 4.      选择需要利用侦测的物体,如cube(不需要设置静态),

并找到组件MeshRenderer下的UseLightProbes进行勾选

 

刷地形

准备:先设置大小400*400  厚度30

预置物

 

11.7

Terrain组件设置中 Case shadows选项若取消勾选地形及花草树木

影子不被烘焙(注意:烘焙后才能看到效果)

 

如果需要受风影响必须Terrain组件中找到

创建树按钮->并到EditTree->设置BendFactor参数必须大于0

 

轨迹追踪component->Effects -> TrailRenderer

 

11.10

刚体Rigidbody

IsKinematic 取消刚体物理属性

物理材质PhysicMaterial

音效AudioSource

一般背景音效为2D音效选择背景音效取消3DSound勾选->Apply

 

3D音效可设置范围,将MaxDistance放大或缩小范围,

VolumeRolloff音效曲线设置成LinearRolloff

 

Mute静音

 

PlayOnAwake游戏一运行就开始播放

 

Loop 循环播放音效

 

Volume 音量大小

 

 

脚本

移动的写法

transform.position += Vector3.up * speed; //世界坐标

transform.position += new Vector3 (0, 0, 0.02f); //世界坐标

 

transform.Translate (0, 0, 0.02f);//自身坐标

transform.Translate (0, 0, 0.02f,Space.World);//世界坐标

 

transform.position.x/y/z 用于判断

 

transform.position = new Vector3 (0, 0, 0);定义物体位置

11.11

 

Unassigned….. 此错误提示说明有物体没有给

 

transform.eulerAngles.y >= 30//用于角度判断

 

transform.eulerAngles = new Vector3(10, 10, 10);//定义物体角度

 

鼠标位置移动是以像素为单位

物体位置/大小Position/Scale 以米为单位

 

注意:利用GUITexture制作光标换图效果必须先将GUITexture位置坐标归0

 

Edit -> ProjectSettings -> Input

Input.GetKey。。。    输入键盘上的键(返回值是Bool

Input.GetButton。。。自定义按钮(返回值是Bool

 

应用Input.GetAxisRaw时(返回值是float

Input.GetAxisRaw ("Vertical/ Horizontal ")

Negative Button 负按钮(返回值是-1

Positive Button  正按钮(返回值是1

 

应用Input.GetAxis时(返回值是float

Input.GetAxis("Vertical/ Horizontal ")

Negative Button 负按钮(返回值逐渐过渡到-1

Positive Button  正按钮(返回值逐渐过渡到1

 

 

 

 

 

 

11.12

OnMouseDown()..是指物体受到鼠标点击,此函数运行时只执行一次

 

OnMouseOver()此函数运行时会一直执行

 

只能用在带有碰撞的物体及GUITextureGUIText

 

注意OnMouseDown()..Input.GetMouseButtonDown0)区别

Input.GetMouseButtonDown0)就是指鼠标点击,不论脚本给谁,点击任意地方都可执行效果

OnMouseDown()..带有此函数的脚本给谁,谁才发生作用(并且是受到鼠标点击)

 

public Light myLig;

myLig.enabled = false;//单独组件的勾选

 

gameObject.SetActive(false);//整个物体的勾选

 

练习:通过F1F2F3三种摄像机切换

(1.          正常视角2.俯视图3.围绕场景旋转摄像机)

 

OnDisable  ()是指物体最上方勾选取消时调用

OnEnable()是指物体最上方/单独组建(脚本本身组件)勾选激活时调用

Ctrl + R刷新

11.13

如果物体需要通过脚本更改透明数值的话,必须先将Shader更改成

注意:

不同方法之间调用时(如OnMouseDown()与Update()之间)

有的数值只读时怎么办(如guiTexture.color.a, transform.position.x

一键控制时(bool=!bool ,int=-int

来回循环效果(a+=b,将b取反,判断a的值)

 

换服装,换装备

Material材质球

renderer.material.mainTexture = myTexture[0];

Mesh 网格(外形,形状)

GetComponent<MeshFilter>().mesh = myMesh[0];

 

 

 

 

 

动画如果需要只播放一次,需要找到此动画的模型源文件

 

脚本控制播放一次动画后,切换到其他动画

if(!animation.IsPlaying("Attack02"))//如果没有播放Attack02动画

animation.Play("Idle");

 

l

分别意思为:

清除所有  

重复的提示只显示一行

只显示最新打印效果(一般都需要按下)

只要出现警示,就暂停运行(一般不需要按下)

l

分别意思为:

打印输出

提示

错误提示

 

11.14

Animation

创建animation,然后选择动画到 选到Debug

调节数值

不要忘记再调节成Normal

先时间后位置

 

一个动画多个利用:(如:物1模拟物2

  1. 1.      先明白原理,动画的运动是相对运动
  2. 2.      创建空物体与世界坐标原点重合
  3. 3.      将物1与物2动画中的起始位置重合(Reset
  4. 4.      将物1与空物体打组,空物体为父级,移动空物体到任意位置即可实现。

 

触发事件(触发器)

  1. 1.      两者必须都有碰撞
  2. 2.      其中之一isTrigger勾选,两者都勾选也可
  3. 3.      动的物体加刚体/本身带有组件

11.17

实例化(诞生)

Instantiate(诞生的物体,诞生物体的位置,诞生物体的角度);

Destroy(消失的物体,消失的时间)

11.18

public BoxCollider[] house;

void Start () {

house = GetComponentsInChildren<BoxCollider> ();

//获取自己及子级含有BoxCollider组件的物体

}

 

if (Input.GetMouseButtonDown (0) && Time.time >= nextTime)

       nextTime = Time.time + 2;//2秒执行一次效果

 

gameObject.AddComponent("Rigidbody"); //添加组件

 

transform.LookAt (enemyFirstPos);//Z轴朝向enemyFirstPosVector3

 

Vector3.Distance (transform.position, first.position)//判断距离

 

guiTexture.pixelInset=newRect (Screen.width/2,Screen.height/2,Screen.width*0.1f,Screen.height*0.1f);

//宽度与屏幕匹配

 

11.19

自动寻路

制作步骤:

  1. 1.      确定需要寻路的物体,并添加组件
  2. 2.      将场景中静止的物体设置静态static
  3. 3.      给需要寻路的物体添加脚本

public Transform target;

void Update () {

        GetComponent<NavMeshAgent>().SetDestination (target.position);

  }

  1. 4.      Window中找到
  2. 5.      Bake

 

 

 


属性分别为

寻路物体的外层碰撞半径

寻路物体的速度

寻路物体的加速度

寻路物体的角速度(查看效果时:注意物体面向的角度)

寻路物体与目标物的停止距离

寻路物体的外层碰撞高度

寻路物体的外层碰撞高度位置

 

自动寻路区分层

  1. 1.      在寻路视窗添加层
  1. 2.      选中需要添加寻路层的物体,选择到相应的层
  1. 3.      Bake
  2. 4.      将需要自动寻路的物体选择可以行走的层

      

每次从初始动画开始播放

      

停止播放动画

animation.Stop("run");

数值转成字符串

guiText.text = score.ToString();

血条

       public GUITexture blood;

void Update () {

              blood.pixelInset = new Rect(blood.pixelInset.x,blood.pixelInset.y,

                                                                           nowBlood/maxBlood*myGuiTextureWidth,blood.pixelInset.height);}

切换场景

             if (firstEnemyPos <= 5) {

                    nowBlood -= 5.0f;

                    if(nowBlood <= 0){

                           nowBlood = 0;

//                        Application.LoadLevel("GameOver"); //一方法

                           Application.LoadLevel(1);//切换场景// 二方法

                    }

               }

               注意:不要忘记将场景文件拖到发布视窗

11.20

自动寻路蓝色区域烘焙属性

寻路蓝色区域与障碍物之间半径

寻路蓝色区域与地面的高度

寻路蓝色区域烘焙最大高度

寻路蓝色区域烘焙最大台阶高度

11.21

阶段项目

资源导出

如:模型,选择模型->右键选择selectDependencies

 

11.26

关节

铰链关节

固定关节

弹簧关节

OnJointBreak()关节断开时调用

 

OnTriggerEnter。。。触发器

OnCollisionEnter.. 碰撞器

 

Unity播放视频

  1. 1.       必须安装QuickTime播放器
  2. 2.       影片格式不能是FLV格式

播放视频MovieTexture

public MovieTexture movTexture;

void Start() {

renderer.material.mainTexture = movTexture;

movTexture.Play();

}

11.28

配环境:单位调成米,自动保存的数量及时间,max点的大小

Alt + 鼠标中键 旋转

Alt + W 视窗最大/最小化

一直按住Shift键  复制

Z 快速将物体到屏幕中心显示

F4 线框显示

X 显示/隐藏坐标位置

 

吸附 点吸附

锁定角度 ,

l  调整坐标位置 -> -> 调节到需要的位置即可

l  选中  -> 加线

l  选中  -> 两点之间加线

l  选中 -> 挤出

l   不连续一圈线

连续一圈线

l  删除线 退格键(但点还保留在模型上)

删除点跟线 Ctrl + 退格键(点跟线都删除)

l  补面:选择 ->

l  镜像

 

打组是  取消是Ungroup

Attach是 取消是

 

l  打组Group与Attach区别

Group打组后在unity显示是

Attach在unity中显示是

12.1

Max贴图(分UV)

先找到 ->U…UVW

给物体棋盘格->快捷键M(调到材质球)-> 点击选择->找到 -> 设置图片重复倍数

 

将棋盘格材质球给到物体上

->

法线贴图(凹凸贴图)

 

 

 

 

 

 

 

 

 

 

 

 

12.2

Shader应用

CubeMap

 

1. 将物体的shader更改为

2. 创建CubeMap

3. 将CubeMap指认到相应位置

4. 选择CubeMap到 -> 找到脚本应用即可

5. 创建脚本RenderCubemapWizard,放到Project视窗中即可,注意脚本中

@MenuItem("GameObject/Render into Cubemap"),是指在GameObject找到Render into Cubemap

RenderFromPosition,是指需要反射的物体

CubeMap,是指帮助反射第二步创建的CubeMap

 

 

 

 

 

 

 

12.8

Network

客户端  服务器

 

后台实时运行

 ->

 

[RPC]

//接收消息(服务器,客户端只要带有[RPC]标识,即可互相接受消息)

void MyMessage (string myMessage02,NetworkMessageInfo info)

{

      message += "\n" + "发送者" + info.sender + myMessage02;

}

 

调用MyMessage方法

networkView.RPC("MyMessage",RPCMode.AllBuffered,传入的信息); 

 

使用RPC调用网络请求必须添加组件NetworkView

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.10 NGUI

 

1. 制作Sprite(精灵)

2. 到NGUI中Great->Sprite

3. 精灵显示样式,Filled为填充样式

此选项可制作效果,调整参数

 

若向反向旋转

 

 

1. 制作图集,点击New,创建新图集

2. 选择图片

3. 点击Creat

 

注意血条制作 制作精灵,并在此选项中   

选到,调整FillAmount数值

 

如何将Sprite形成按钮?

    添加组件

如果想让按钮有事件,必须添加碰撞,BoxCollider

     注意将BoxCollider勾选

 

 

 

 

 

想让Lable随着按钮范围始终填充状态

选测Anchors将Target选择你要绑定到的物体

 

若将整个按钮与屏幕位置分辨率匹配,再将sprite的Anchors下的Target选择为UIRoot

 

补充:若在Android平台发布出现SkyBox像素不清晰,选择到相应图片,将图片设置成

 

NGUI如何支持中文,制作NGUI字体集

一方法:

1. 创建空物体,添加UIFont组件

2.

将FontType设置为Dynamic

在TTF Font添加字体

3. 然后将空物体形成预置物(形成NGUI字体集)

4. 到UILable属性中 点击Font

选择刚才制作的字体即可。

二方法:直接更改属性 ,将原来NGUI选项选成Unity,将需要的字体拖到后方即可。

 

 

九宫格

用于NGUI优化,只用一张图的某一部分像素,但即使放大也不影响清晰度

选择Sprite到Edit

调节Border选项,选择图片中需要的像素部分, -> 返回到Sprite

-> 注意将sprite的Type设置成Sliced

 

滑动效果

1. 创建sprite,创建

2. 将sprite添加

3. 将 与sprite打组, 为父级

4. 注意将 拖到sprite属性 中

 

 

延伸->在按钮滑动效果添加sprite ,sprite与 大小一致,在sprite范围内也可以实现滑动效果

将sprite同样添加 组件即可。

注意:深度值

 

12.11

l Animation

Mecanim

Avater(Mecanim可识别骨骼的标识)

Retargeting(动画的互相应用)

AvaterMask(骨骼遮罩)

    

    Weight 权重

    权重是指某个动画层在整个动画中的影响,

    若权重值为1则此层动画将与整个动画融合

    若权重值为0则此层动画与整个动画完全不融合

 

12.13

Unity 2D

将图片放到项目管理视窗中,更改图片格式为Sprite

如果精灵需要切割成多张,将SpriteMode更改为Multiple

如果只是一张精灵,将SpriteMode设置为Single

 

2D动画

将需要结合在一起形成2D动画的精灵,选中拖到场景视窗中,会有窗口弹出,提醒保存动画,将动画保存即可形成2D动画。

 

注意:

若需要精灵形成触发事件,则添加2D碰撞,2D刚体,并且2D刚体中

不要将IsKinematic勾选,否则触发事件不会形成。

若完全不需要重力,将GravityScale设置为0.

 

 

时间: 2024-10-08 10:09:41

Unity3d 要点板书的相关文章

Unity3d要点

屏幕坐标与鼠标位置:屏幕坐标系以左上角为原点(0, 0),右下角为(Screen.Width, Screen.Height).Input.mousePosition鼠标位置以屏幕左下角为原点(0, 0),屏幕右上角为(Screen.Width, Screen.Height). 一般在新建类时会产生空的Update函数.如果代码不需要用到该函数,应该该函数进行删除.另外,尽量不要在Update函数内执行Find.FindObjectOfType.FindGameObjectsWithTag这些寻找

Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)

原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140423517951/ U3D集成移动MM的SDK绝对是以坑爹为主的东西. 浪费大量时间去弄这玩意.真不知道设计MM SDK的人咋想的,你们应该去参考下移动百宝箱的SDK设计方式,简单易用不坑爹,1小时内绝对能搞定. 因为移动MM支付的SDK只提供android版本的,要自己写过一个android项目再打包重新生成一个jar来供Unity3d引擎使用,这一部分我就不写了,网上

Unity3D Layer要点

简介         Layer可以用于光照的分层和物理碰撞的分层,这样可以很好地进行性能优化 数据结构         Layer在Unity中有3中呈现方式:1.string名字,2.int层索引,3.LayerMask数据        一般地,在编辑器中,我们设置GameObject的Layer,是直接使用的层的名字,比如Default.UI等等.         而在代码中,使用的是GameObject的Layer属性,该属性是int型,取值在0到31之间,代表层索引,并且和名称一一对

Unity3D学习笔记之八为场景添加细节(一)

这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 我花了30分钟做了一个中等大小的迷宫场景,不知道大家自己发挥,做的场景大小如何. 在完成场景之后,我们看到Hierarchy视图里面的东西已经满了,所以我们先来整理一下Hierarchy视图.创建一个空的游戏物体命名为Environment. 然后来到Hierarchy视图,先讲First Person Controller找到,挪到最上方,然后选中第一个物体,按住

Unity3D 学习笔记 - Garen Pick the Balls 捡球小游戏设计 (二) Macanim 动画状态机

注:本游戏开发环境为Unity3D 5.3.4 本星期要求: 模仿 AnimationEvent 编写一个 StateEvents 类 用户可以创建一个指定时间.指定状态触发的事件类 事件可以采用反射机制,调用调用客户的方法:或使用订阅发布方法调用客户的方法. 在你的动画控制程序中使用 StateEvents 类 我采用的是上星期的Garen Pick the Balls小游戏,将Legacy动画部分用Mecanim重写. 要点: 1. 初次状态机开发,尚未实现Run和Attack同时进行(Bl

Unity3D 5.1烘培 操作

http://blog.csdn.net/asd237241291/article/details/48056575 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 Unity3D引擎技术交流QQ群:[119706192]本文链接地址: Unity3D_5.1烘培 静态Bake 1.将要烘培的场景物体设施state (只有静态对象会被纳入GI预计算) 2.留下静态烘培模式 3.设置灯光为静态烘培模式 4.烘焙 (如果Auto(Lighting->Scene->Auto)这个选项是

Unity3D游戏开发之网络游戏服务器架构设计培训(如何做一名好主程)

在我们初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发.后面就应该朝着主程的方面前进 今天给大家讲一下如何做一个好的主程 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题: 1.服务器跑在什么样的操作系统环境下?2.采用哪几种语言开发?主要是什么?3.服务器和客户端以什么样的接口通讯?4.采用哪些第三方的类库? 除了技术背

2Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载

转载自风宇冲Unity3D教程学院 http://blog.sina.com.cn/s/blog_471132920101crh3.html 引言:想用Unity3D制作优秀的游戏,插件是必不可少的.工欲善其事必先利其器.本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择适当的工具.为此我写了插件的经验及理论讲解,涉及插件的 学习/辨别/选择/配合.也写了插件的 评测/教程/下载.关于评测,带有一定的主观性,仅供参考.关于教程,热门插件网上已经有很多教程了,本文提供链接,网上资料少的插

Unity3D游戏开发之从&quot;复活&quot;和&quot;暂停/恢复&quot;谈游戏数据配置管理

随着游戏制作技术的不断发展,在经历了从2D到3D.从单机到网游.从PC游戏到移动游戏的种种演变后,玩家对于游戏质量的要求越来越高,游戏制作的难度相应地增加,整个游戏研发的体系开始变得庞大而复杂,由此就产生了游戏数据配置和管理的相关问题.本文将从游戏中的"复活"和"暂停/恢复"这两个应用场景的角度来谈谈在游戏开发中如何对游戏中的数据进行管理和配置. 为什么要谈游戏数据的配置和管理 不知道大家是不是会和博主有一样的想法,就是当你回头来思考游戏开发的时候,你常常会发现,如