zoukankan      html  css  js  c++  java
  • 干货 unity小贴士

    3.以Y轴为依据进行Sprite排序
    对于2D游戏,将Transparency Sort Mode (Edit > Project Settings > Graphics ) 设置为Custom Axis,然后设置Transparency Sort Axis,场景中的Sprite可以根据Y轴进行排序。如下图所示,当设置为(0,1,0)时,Y坐标相对较大的Sprite排在Y坐标相对较小的Sprite之下,当设置为(0,-1,0)时,则相反。


    5. 快速新建基于自定义Shader的材质
    在Project面板中选中一个自定义Shader,右键选择新建材质(Create>Material),则材质默认使用的着色器为z之前选择的Shader,同时材质名称为Shader的名称。

    12. Animation 中 Add Property 可以修改脚本的变量

    16.快速比较距离
    将两点之间的距离与一个固定距离进行比较时,可使两点相减然后取平方(即sqrMagnitude),然后用该值与某个距离值的平方进行比较。不建议使用Vector3.Distance方法获取两点之间距离,然后与给定的距离值进行比较。因为Vector3.Distance(a,b) 相当于 (a-b).magnitude,即求平方后开根,而sqrMagnitude方法省去了求平方根的操作,所以比magnitude执行快。
    建议:
    if ((pointA - pointB).sqrMagnitude < dist * dist) {
    // ...
    }
    不建议:
    if (Vector3.Distance(pointA, pointB) < dist) {

    }

    18.
    [SerializeField]标记的私有变量可以在 Inspector 面板中显示.

    25. CompareTag方法
    当对游戏对象的Tag进行比对时,从性能考虑,可使用CompareTag方法,不建议使用双等号进行判断。

    27. 查找含有某组件的游戏对象
    如果需要查找挂载了某个组件的游戏对象,直接在Hierarchy面板的搜索框中输入组件名称即可,需要注意组件名称中的空格,比如搜索”MeshCollider“而不是”Mesh Collider“


    38.ContextMenu
    使用ContextMenu属性标记函数,能够在脚本所在的上下文菜单中调用

    45.最大化窗口
    使用快捷键Shift+空格键,可以快速最大化鼠标所在的窗口,而不用选择窗口右上角的Maximize命令

    50.锁定Inspector
    点击Inspector右上角的锁定按钮,或在上下文菜单中选择Lock命令,可以将当前选中游戏对象的Inspector面板锁定。然后选择Add Tab > Inspector命令,添加一个Inspector,这样能够方便在两个游戏对象之间互相拷贝组件数据。


    51.Inspector调试模式
    在Inspector面板右上角的上下文菜单中,选择Debug命令,启动调试模式,此时将显示组件包含的所有变量,包括私有变量,当运行编辑器时,可以实时查看各组件所有变量的变化。


    53.风格化Debug.Log的输出信息
    当Debug.Log方法的输出消息是字符串时,可以使用富文本标记来强调内容。
    Debug.Log("<color=red>红色文本</color> AssetBundle not found");


    54.绘制调试数据
    当变量随着时间的推进而改变时,可使用AnimationCurve实例在程序运行时绘制此数据,如下代码所示:
    public AnimationCurve plot = new AnimationCurve();
    void Update()
    {
    float value = Mathf.Sin(Time.time);
    plot.AddKey(Time.realtimeSinceStartup, value);
    }
    返回Unity编辑器,运行程序,点击plot属性,此时会随着时间动态绘制数据的变化情况


    57.Blender (三维动画制作软件)


    58. Inspector面板中物体的图标下拉可以给游戏对象指定一个特定颜色.


    65.自定义窗口
    将类继承自EditorWindow,可以添加自定义窗口,在此基础上编写一些命令和工具,如下代码所示:
    using UnityEngine;
    using UnityEditor;

    public class ExampleWindow : EditorWindow
    {
    [MenuItem("Window/Example")]
    public static void ShowWindow()
    {
    GetWindow<ExampleWindow>("Example");
    }
    }


    72. 管理程序集
    在Project面板中选择Create > Assembly Definition 命令,创建程序集文件,然后将其拖放到指定的文件夹中,定义脚本依赖关系,可以确保脚本更改后,只会重新生成必需的程序集,从而减少编译时间。


    73.WaitForSecondsRealtime
    当时间缩放为0时(即Time.timeScale=0f),waitForSeconds方法将不会停止等待,后续代码也不会执行,此时可使用WaitForSecondsRealtime方法


    77/78/79. Inspector 方便属性修饰
    [Range(0f, 10f)] // 滑块
    [Header("自定义文字")]
    [ToolTip("鼠标悬停, 提示文本")]


    85. 组件预设
    在Inspector 面板中组件的右上角帮助和上下文菜单按钮中间的调节按钮,点击可以使用或保存组件预设.


    86. foreach遍历游戏对象的所有子物体
    foreach (Transform child in transform) {
    Debug.Log(child.name);
    }


    87. 使用 transform.SetSibilingIndex 方法设置游戏对象在 Hierachy 面板中的顺序


    90. 脚本暂停编辑器播放
    EditorApplication.isPaused = true;


    91. 编辑器上方的播放暂停右边的步进(Step)按钮,可以逐帧查看程序运行状态.


    92. Profiler工具分析, 查看函数资源的使用情况
    引入 UnityEngine.Profiling 命名空间;
    Profiler.BeginSample("expensive");
    CalculateSomething();
    Profiler.EndSample();


    97. InvokeRepeating方法
    按照一定的时间间隔反复执行一个函数, 若不使用CancelInvoke 将会持续执行, 即使将方法所在的脚本关闭.


    98. Frame Debugger(Window -> Analysis -> Frame Debugger)
    查看每一帧的渲染过程

    99. Physics Debugger(Window -> Analysis -> Physics Debugger)
    绘制出来所有游戏对象的碰撞体.

  • 相关阅读:
    离线安装 Cloudera Manager 5 和 CDH5.10
    Sersync+Rsync实现触发式文件同步
    Azkaban3.x集群部署(multiple executor mode)
    内置函数
    递归
    嵌套函数,匿名函数,高阶函数
    局部变量,全局变量,作用域
    函数的介绍
    文件处理
    第二模块-三元运算
  • 原文地址:https://www.cnblogs.com/sweetXiaoma/p/10572402.html
Copyright © 2011-2022 走看看