Unity3D 开发技巧

视频教程:

Unity3D 开发技巧分享,你可能不知道的小知识


Unity中文课堂教程地址:

Unity3D开发-你可能不知道的知识 | Unity 中文课堂


Start 函数可以用协程

默认协同函数 Start 可将 void 改为IEnumerator 作为协程启动

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StartTimer : MonoBehaviour
{
    private IEnumerator Start()
    {
        Debug.Log("Step1 :" + Time.time);
        yield return null;
        //一帧之后做一些事情
        Debug.Log("Step2 :"+Time.time);
        yield return new WaitForSeconds(1f);
        //延迟之后做一些事情
        Debug.Log("Step3 :" + Time.time);
    }
}

Inspector面板 显示私有属性

私有属性为灰色,运行时按下alt键时 显示脚本中命名

使用 Properties 面板

脚本右键 选择Properties

Inspector面板 显示自定义脚本属性

属性前加入 [field: SerializeField]


以上方法依然适用于接口

创建接口IDanageable

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public interface IDanageable
{ 
    float MaxHealth { get; set; }
    float CurrentHealth { get; set; }
    void Damage(float danageAmount);
    void Die();
}

实现接口,想要显示的属性标记 [field :SerializeField ]

复制代码
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour,IDanageable
{
    [field :SerializeField ]
    public float MaxHealth { get; set; }
    public float CurrentHealth { get; set ; }

    public void Damage(float danageAmount)
    {   
    }

    public void Die()
    {
    }

}

脚本属性面板显示HDR

默认声明的 Color 是不能使用HDR

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ColorStuff : MonoBehaviour
{
    [ColorUsage(true,true)]
    [SerializeField]
    private Color _SpriteColor;
}

属性前加 [ColorUsage(true,true)]

快速删除Inspector 组件的属性

点击属性后 按下键盘退格键可变为null

Inspector面板可进行数学运算

Alt +鼠标左键可快速最大化最小话窗口

代码添加注释

复制代码
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SummaryScript : MonoBehaviour
{
    /// <summary>
    /// 函数注释
    /// </summary>
    public void Function(){ }
    /// <summary>
    ///  函数注释
    ///  函数注释2
    /// </summary>
    /// <param name="data">数据1</param>
    /// <param name="data2">数据2</param>
    public void Function(string data,float data2)  {}
}

函数前输入///后 输入注释 ,其余脚本调用时可查看

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptToCallFunction : MonoBehaviour
{
    private SummaryScript _summaryScript;
    private void Start()
    {
        _summaryScript = GetComponent<SummaryScript>();
        _summaryScript.Function();
    }
}

使用 #region #endregion 折叠代码

复制代码
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SummaryScript : MonoBehaviour
{
    /// <summary>
    /// 函数注释
    /// </summary>
    public void Function(){ }
    #region 折叠的注释
    /// <summary>
    ///  函数注释
    ///  函数注释2
    /// </summary>
    /// <param name="data">数据1</param>
    /// <param name="data2">数据2</param>
    #endregion
    public void Function(string data,float data2)  {}
}

代码批量修改

按下键盘Alt键+鼠标左键和进行批量选择

按下 Shift + ALT键 鼠标点击开头和结尾也可批量操作

键盘 ALT +Ctrl+鼠标左键可控制不同垂直位置的光标

使用 ?. 可代替 !=null

创建物体时默认坐标归零

Edit -> Preferences -> Scene Wiew ->Create Objects at Origin

以固定定距离移动物体

设置固定移动量

按下Ctrl +Shift 点击物体的轴可以固定距离移动

相关推荐
majingming1234 小时前
FUNCTION
java·前端·javascript
是娇娇公主~5 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
A_nanda5 小时前
Vue项目升级
前端·vue3·vue2
SuperEugene5 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
abigale036 小时前
【浏览器 API / 网络请求 / 文件处理】前端文件上传全流程:从基础上传到断点续传
前端·typescript·文件上传·vue cli
Setsuna_F_Seiei6 小时前
AI 对话应用之页面滚动交互的实现
前端·javascript·ai编程
xuxie996 小时前
N11 ARM-irq
java·开发语言
新缸中之脑6 小时前
追踪来自Agent的Web 流量
前端
唐青枫6 小时前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
c#·.net
wefly20177 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8