作者: 叫我颜先生 | 来源:发表于2019-02-02 10:53 被阅读0次

快捷键

  • Scene窗口近距离查看对象:F
  • Scene窗口锁定游戏对象:Shift+F
  • Scene窗口展现窗口内容合适位置:Ctrl+Shift+F 移动相机观察物体
  • 最大化鼠标所在窗口(Maximize):Shift+Space
  • 飞行模式:鼠标右键+WSAD 可以前后左右 QE上下
  • 顶点吸附:V 按住V键 鼠标移动到顶点处按下鼠标左键 移动到吸附物体处

Editor

  • 在Inspector面板中显示私有变量

    [SerializeField]
    private int myNumber = 20;
    
  • 在Inspector面板中隐藏公有变量

    [HideInInspector]
    public int myNumber = 20;
    
  • 编辑器菜单栏

    //MenuItem属性 菜单栏可选择执行函数
    [MenuItem("MyMenu/Do Something")]
    static void DoSomething()
    {
    }
    
  • 自定义窗口

    //将类继承自EditorWindow,可以添加自定义窗口,在此基础上编写一些命令和工具,window菜单下多了Example窗口选项
    public class ExampleWindow : EditorWindow
    {
        [MenuItem("Window/Example")]
        public static void ShowWindow()
        {
            GetWindow<ExampleWindow>("Example");
        }
    }
    
    自定义窗口.jpg
  • Inspector某属性右侧齿轮下拉

    //对应脚本右侧点击齿轮出现DoSomething选项
    [ContextMenu("Do Something")]
    void DoSomething()
    {  
    }
    
    ContextMenu.jpg
  • 自定义Inspector属性

    [CustomEditor(typeof(Sphere))]
    public class SphereEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            GUILayout.Label("自定义Inspector");
            GUILayout.Button("确定");
        }
    }
    
    //两个变量声明之间加入[Space]可在Inspector中添加一个空行
    //添加Header可在Inspector面板中加入一段文字
    [Header("Player Settings")][/color][/size][/font]
    [font=微软雅黑][size=3][color=rgb(26, 26, 26)]
    public float speed = 1f;
    public int size = 10;
    
    //在变量前加入Tooltip,当鼠标悬停在Inspector面板中的变量上时,可显示关于此变量的说明
    [Tooltip("移动速度")]
    public float speed = 1f;
    
    自定义Inspector.jpg 自定义Inspector.jpg 自定义Inspector.jpg
  • Layer层设置子层级

    当创建层时,使用斜杠符进行路径式命名可以为层添加子菜单,可以更好地组织项目

    例如:Effect/Model,Effect/UI


C#

  • 获取一个随机布尔值

    bool trueOrFalse = (Random.value > 0.5f);
    
  • 使用Struct代替Class

    如果数据结构仅保存了有限的几个数值变量,可以考虑使用struct代替Class,因为Class实例由垃圾回收机制来保证内存的回收处理;而struct变量使用完后立即自动解除内存分配

  • 协程嵌套

    void Start()
    {
        StartCoroutine(FirstCo());
    }
     
    IEnumerator FirstCo()
    {
        yield return StartCoroutine(SecondCo());
    }
     
    IEnumerator SecondCo()
    {
        yield return 0;
    }
    
  • 比较物体是否接近

    //物体距离差平方相比,前者相对于后者开方稍微快点
    if ((pointA - pointB).sqrMagnitude < dist * dist)
    {
    }
    
    if (Vector3.Distance(pointA, pointB) < dist)
    {
    }
    
  • CompareTag方法

    //当对游戏对象的Tag进行比对时,从性能考虑,可使用CompareTag方法,不建议使用双等号进行判断
    if (gameObject.CompareTag("Enemy"))
    {
    }
    
    if (gameObject.tag == "Enemy")
    {
    }
    
  • 字符串拼接

    //可使用StringBuilder进行字符串的拼接,不要使用字符串相加的形式,因为这样会带来额外的内存垃圾,使用StringBuilder需要引用命名空间System.Text
    StringBuilder myStr = new StringBuilder();
    myStr.Append("Hello").Append("The").Append("World");
    
    string myStr = "Hello" + "the" + "world";
    
  • 字符串性能优化

    //如果某字符串在整个应用过程中不会改变且被频繁使用,可将其存储在静态只读变量中,从而节省内存分配
    static readonly string Fire1 = "Fire1";
    void Update()
    {
        Input.GetAxis(Fire1);
    }
    
    void Update()
    {
        Input.GetAxis("Fire1");
    }
    
  • InvokeRepeating方法

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


参考

https://blog.csdn.net/meegomeego/article/details/38439593

http://www.manew.com/thread-143268-1-1.html

相关文章

  • 杂杂杂

    梦见在桥上,是我老家的桥。那个桥没了,有个老太婆在对面。 一开始是我的自行车坏了,找了好几家修理店都说不能修,后面...

  • 杂杂杂

    偏爱雨天的颓废劲儿,情绪随着雨声砸在窗外,心中充满杂念,却又觉得空荡荡,晰沥又模糊。或许我是具有抑郁天分的,...

  • 杂杂杂

    从单身至结婚,人总会发生变化,幸福不幸福只是一瞬间的事情。 一个女人在家庭中的地位,尊严。可以影响着整个家庭的幸福...

  • 杂,杂,杂

    周一上午,单位组织活动,我们小组因为迟到了一分钟,被拒之门外,取消了入场资格,我深深地感到时间他妈的真的...

  • 杂杂杂

    发文 终于可以发文了,几天也没有动手在手机或者电脑面前打过字,这几天看了两本书一些真实又温暖的人生故事和一位即将...

  • 杂杂杂

    今天出图书馆看到有人拿着摄影机,可能是学长学姐们想拍些照片留作纪念吧! 还记得当时来学校的那个傻样,逃离高中苦...

  • 杂杂杂

    就现在来说,倾其所有的能力也只是蚍蜉撼树 很讨厌长大,特别到了20岁左右的年纪,个个事件的意义开始有了在潜...

  • 杂杂杂

    很多东西并不是真正的热爱 既没有一见钟情般的惊艳,也不会像日久生情那般沉湎 只是成为一种习惯,却说深入骨髓,不会结...

  • 杂杂杂

    这一路走了这么远,终于明白了相伴一路终究离散,如果过分追求靠近总会知道些许的失落和反差。明白了许多,厌恶了许多,但...

  • 无题

    五味杂杂沉,杂杂成五味。

网友评论

      本文标题:

      本文链接:https://www.haomeiwen.com/subject/izhssqtx.html