zoukankan      html  css  js  c++  java
  • 【基础知识】Unity查漏补缺

    最近发现了一些平时不太注重的知识点,特此建立个专题,把零散的东西、疏忽的东西临时记录下来。

    Mecanim动画系统:

    1)设置AnimatorController时,如果某个动作播放不正常。

    首先打开不正常的FBX动作的Inspector面板的Animations属性

          然后对如下选项进行检查:

       LoopTime:动画结束后是否进行循环播放(在走、跑等动作中,要注意勾选此选项)

       ----LoopPose:无缝循环动作(勾选)

       Root Transform Rotation:根旋转变换

       Root Transform Position(Y):根位置变换(Y)

       Root Transform Position(XZ):根位置变换(XZ)

       ----Bake into Pose:是否将根运动保存进骨骼里面。(关闭此选项后,游戏对象的旋转、位置将不受动画的影响)

          再检查时间轴的起始点和终止点,根据需求确认4个loop match的灯状态(绿灯时表示开始帧和结束帧为同样的一个造型)。

    2)对一次性动画,比如Run动画过程中发生的Jump动画,在Jump结束后的转换状态条件中,必须要添加ExitTime属性,确保动画播放完成。

       

    Network类:

    1)服务器端和客户端的代码分两个场景保存导出,避免使用RPC发送消息时,客户端无法接受到消息的情况发生。

    预制件:

    使用多个预制件进行场景动态加载时,需要注意两方面内容:

    1.各个预制件的实例化顺序:摄像机、灯光、场景、UI、其他功能(注意依赖关系)

    2.各个预制件之间的引用关系。避免在预制件的Inspector窗口中引用其他预制件的组件。

    例如预制件A和预制件B,预制件A的Inspector窗口中引用了预制件的B。

    在这两个预制件进行实例化后,游戏对象A的Inspector窗口中仍然引用的是预制件B。

    因此,解决方法目前想到两种:

    1.采用单例模式引用预制件B

    1     /// <summary>
    2     /// 响应切换按钮,切换摄像机
    3     /// </summary>
    4     public void SwitchCamera()
    5     {
    6         SwitchCameraController.Instance.SwitchCamera();
    7     }

    2.采用代码动态加载其他预制件

    1     private GameObject[] m_EnemyPath;                       // 敌人移动路径
    2     void Awake()
    3     {
    4         // 获取敌人移动路径
    5         m_EnemyPath = GameObject.FindGameObjectsWithTag(TagManage.PathTag);
    6     }
  • 相关阅读:
    框架集。样式表
    2017.11.23知识点整理
    HTML5的标签
    HTML5大体概括截图
    2017.11.21 通用标签及属性
    2017.11.21 课程随记
    JavaScript数组
    JavaScript语句
    javascript基础知识
    不用alert提示的非空表单验证
  • 原文地址:https://www.cnblogs.com/muxiaomo/p/4519176.html
Copyright © 2011-2022 走看看