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 点击物体的轴可以固定距离移动

相关推荐
南棱笑笑生3 小时前
20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配CTP触摸屏FT5X06
linux·c语言·开发语言·rockchip
三十_A3 小时前
如何正确实现圆角渐变边框?为什么 border-radius 对 border-image 不生效?
前端·css·css3
小满zs4 小时前
Next.js第十三章(缓存组件)
前端
前端老宋Running4 小时前
“受控组件”的诅咒:为什么你需要 React Hook Form + Zod 来拯救你的键盘?
前端·javascript·react.js
风止何安啊4 小时前
拿捏 React 组件通讯:从父子到跨组件的「传功秘籍」
前端·react.js·面试
懒得不想起名字4 小时前
将flutter打成aar包嵌入到安卓
前端
Highcharts.js4 小时前
官方文档|Angular 框架集成 Highcharts Dashboards
前端·javascript·angular.js·highcharts·看板·使用文档·dashboards
兩尛4 小时前
高频提问部分
开发语言·后端·ruby
深蓝电商API4 小时前
企业级爬虫架构设计:任务调度、容错、重试、降重
开发语言·爬虫·ruby
韭菜炒大葱5 小时前
React 新手村通关指南:状态、组件与魔法 UI 🧙‍♂️
前端·javascript·react.js