zoukankan      html  css  js  c++  java
  • 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");

     

    分别意思为:

    清除所有  

    重复的提示只显示一行

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

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

    分别意思为:

    打印输出

    提示

    错误提示

     

    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 += " " + "发送者" + 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.

     

     

  • 相关阅读:
    通过keras例子理解LSTM 循环神经网络(RNN)
    [机器学习]集成学习--bagging、boosting、stacking
    [机器学习]梯度提升决策树--GBDT
    [机器学习]回归--Decision Tree Regression
    [机器学习]回归--Support Vector Regression(SVR)
    [机器学习]回归--Polinomial Regression 多项式回归
    [机器学习]回归--(Simple LR and Multiple LR)
    [深度学习] 权重初始化--Weight Initialization
    深度学习实践经验汇总
    Deeplearning.ai课程笔记--汇总
  • 原文地址:https://www.cnblogs.com/liuruitao/p/4244462.html
Copyright © 2011-2022 走看看