avatar
文章
40
标签
18
分类
22
首页
时间轴
标签
分类
友链
关于
游戏开发笔记
首页
时间轴
标签
分类
友链
关于

游戏开发笔记

Unity编辑器扩展入门——Event 事件系统
发表于2026-03-15|编辑器扩展
Lesson21 - Event 事件系统Event 概述Event 类用于在编辑模式下监听用户的键盘、鼠标等输入事件。与运行时的 Input 类不同,Event 专门用于编辑器拓展开发,在 OnGUI 和 SceneView 回调中使用。 获取当前事件Event.current1Event e = Event.current; 获取当前帧的输入事件。每个 OnGUI 帧都会有一个当前事件。 重要:避免在布局计算期间多次访问 Event.current,应该在函数开头缓存: 1234567private void OnGUI() { Event e = Event.current; // 只获取一次 if (e.type == EventType.MouseDown) { // 处理鼠标按下 }} 修饰键检测Alt、Shift、Ctrl 键123if (e.alt) Debug.Log("Alt 被按下");if (e.shift) ...
Unity编辑器扩展入门——Selection 类
发表于2026-03-15|编辑器扩展
Lesson18-20 - Selection 类Selection 概述Selection 类用于在编辑器中获取当前选中的对象,只能在编辑模式下使用。通过 Selection 可以监听用户的选择变化,进而实现更多交互功能。 获取单个对象获取选中的 Object1Object selectedObj = Selection.activeObject; 返回当前选中的 Object。如果未选中任何对象返回 null。如果选中了多个对象,返回第一个。 获取选中的 GameObject1GameObject selectedGO = Selection.activeGameObject; 返回当前选中的 GameObject。仅当选中的是 GameObject 时才有效。 获取选中的 Transform1Transform selectedTransform = Selection.activeTransform; 返回选中的 Transform。仅限于场景中的对象,项目资源中的预制体无法获取。 获取所有选中对象获取所有 Object1234567Object[]...
Unity编辑器扩展入门——EditorGUIUtility 工具类
发表于2026-03-15|编辑器扩展
Lesson12 - EditorGUIUtility 工具类EditorGUIUtility 概述EditorGUIUtility 是 EditorGUI 的实用工具类,提供编辑器拓展开发中常用的辅助功能,如资源加载、对象选择、事件传递等。 资源加载 - Editor Default Resources创建特殊文件夹在 Assets 下创建 Editor Default Resources 文件夹(注意:文件夹名称必须完全相同,包括大小写和空格)。这个文件夹中的资源可以被 EditorGUIUtility 加载。 加载资源(不存在返回 null)1Texture img = EditorGUIUtility.Load("HelloWorld.png") as Texture; 如果资源不存在,返回 null。必须包含文件后缀名。 加载资源(不存在报错)1Texture img = EditorGUIUtility.LoadRequired("HelloWorld.png") as...
Unity编辑器扩展入门——EditorGUI 控件系列总览
发表于2026-03-15|编辑器扩展
Lesson3-11 - EditorGUI 控件系列总览GUILayout vs EditorGUILayoutGUILayout:基础 GUI 自动布局类,所有控件位置自动排列,无需手动设置 Rect。 EditorGUILayout:编辑器专用 GUI 自动布局类,提供更多编辑器相关的控件。 EditorGUI:编辑器 GUI 类,需要手动指定控件位置和大小。 在编辑器拓展开发中,通常使用 EditorGUILayout,因为它提供了更多编辑器功能且自动布局。 Lesson3 - EditorGUI 总览EditorGUI 包含各种编辑器专用的 UI 控件。实际使用时通常在 EditorWindow 的 OnGUI 方法中调用,使用 EditorGUILayout 版本。 Lesson4 - 文本、层级、标签、颜色文本标签12EditorGUILayout.LabelField("标题", "内容");EditorGUILayout.LabelField("仅显示标题"); 层级(Layer)选择1int...
Unity编辑器扩展入门——自定义编辑器窗口
发表于2026-03-15|编辑器扩展
Lesson2 - 自定义编辑器窗口EditorWindow 基础继承 EditorWindow 类并重写 OnGUI 方法可以创建自定义编辑器窗口。这是实现编辑器拓展的基础。 创建并显示窗口123456789101112131415161718using UnityEditor;using UnityEngine;public class MyWindow : EditorWindow { [MenuItem("Window/My Custom Window")] public static void ShowWindow() { MyWindow win = EditorWindow.GetWindow<MyWindow>("窗口标题"); win.titleContent = new GUIContent("我的窗口"); win.Show(); } private void OnGUI()...
Unity编辑器扩展入门——自定义菜单栏拓展
发表于2026-03-15|编辑器扩展
Lesson1 - 自定义菜单栏拓展Editor 特殊文件夹所有使用 UnityEditor 命名空间的脚本必须放在 Assets/Editor 文件夹中。这个文件夹中的代码不会被打入游戏包,避免打包时报错。 MenuItem 特性 - 创建菜单在静态方法前添加 [MenuItem("路径")] 特性可在编辑器菜单创建自定义菜单项。 顶级菜单栏1234[MenuItem("Unity编辑器拓展/Lesson1/TestFun")]private static void TestFun() { Debug.Log("菜单被点击");} Hierarchy 窗口右键菜单1234[MenuItem("GameObject/Lesson1/TestFun")]private static void TestFun2() { Debug.Log("TestFun2");} Project...
Unity编辑器扩展入门——Inspector 窗口拓展
发表于2026-03-15|编辑器扩展
Lesson22-23 - Inspector 窗口拓展Inspector 拓展概述通过 CustomEditor 特性,可以完全自定义脚本在 Inspector 窗口中的显示方式。这提供了强大的编辑器自定义能力。 基础框架创建自定义编辑器脚本命名约定:在目标脚本名后加 Editor,并放在 Editor 文件夹中。 123456789using UnityEditor;using UnityEngine;[CustomEditor(typeof(MyScript))]public class MyScriptEditor : Editor { public override void OnInspectorGUI() { EditorGUILayout.LabelField("这是自定义 Inspector"); }} CustomEditor...
装饰器模式
发表于2026-02-12|设计模式
详细见:https://www.runoob.com/design-pattern/decorator-pattern.html 什么是装饰器模式?? 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。 说人话:我原本的类不想改,但是我还想添加额外的功能 实现思想:套娃 主要解决了什么问题? 避免通过继承引入静态特征,特别是在子类数量急剧膨胀的情况下。 允许在运行时动态地添加或修改对象的功能。 :::color4使用建议: 在需要动态扩展功能时,考虑使用装饰器模式。 保持装饰者和具体组件的接口一致,以确保灵活性。 ::: 具体实现 下面以简单的附魔系统演示代码 12345678910111213public interface IWeapon { void Attack();}public class Sword : IWeapon{ public void Attack() { Debug.Log("挥剑攻击!"); ...
状态模式
发表于2026-02-12|设计模式
详细请见:https://www.runoob.com/design-pattern/state-pattern.html 此为FSM有限状态机的基础 什么是状态模式?如果一个角色现在有如下几个状态,待机、攻击、巡逻等,且当前只有一个状态。 正常在书写代码时进行状态切换往往会维护一个超级史山的ifelse语句非常不便。 1234567891011121314151617181920212223242526272829303132333435363738public class Player{ public enum PlayerState { Idle, Move, Attack, Hurt, Dead } public PlayerState currentState; public void Update() { switch (currentState) { case PlayerState.Idle: ...
外观模式
发表于2026-02-12|设计模式
详细请见:https://www.runoob.com/design-pattern/facade-pattern.html 什么是外观模式???外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 主要解决的问题 降低客户端与复杂子系统之间的耦合度。 简化客户端对复杂系统的操作,隐藏内部实现细节。 缺优点 优点 减少依赖:客户端与子系统之间的依赖减少。 提高灵活性:子系统的内部变化不会影响客户端。 增强安全性:隐藏了子系统的内部实现,只暴露必要的操作。 缺点 违反开闭原则:对子系统的修改可能需要对外观类进行相应的修改。 代码实现 123456789101112131415161718192021222324252627public interface Shape{ void Draw();}public class Rectangle :...
12…4
avatar
wqx
文章
40
标签
18
分类
22
Follow Me
公告
-只用于学习如有版权问题请联系我 484807196@qq.com
最新文章
Unity编辑器扩展入门——Event 事件系统2026-03-15
Unity编辑器扩展入门——Selection 类2026-03-15
Unity编辑器扩展入门——EditorGUIUtility 工具类2026-03-15
Unity编辑器扩展入门——EditorGUI 控件系列总览2026-03-15
Unity编辑器扩展入门——自定义编辑器窗口2026-03-15
分类
  • C#进阶2
    • 八股文2
  • Lua2
  • Shader7
  • UGUI1
  • Unity4
    • Mesh编程1
    • 基础1
标签
Shader 一些机制讲解 优化 JSON 生命周期函数 网络开发 八股文 框架 -案例 基础 进阶 面试 工具 术语介绍 UGUI Mesh 编辑器扩展 设计模式
归档
  • 三月 2026 7
  • 二月 2026 6
  • 七月 2025 11
  • 六月 2025 2
  • 五月 2025 8
  • 四月 2025 6
网站信息
文章数目 :
40
本站总字数 :
146.8k
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2019 - 2026 By wqx
框架 Hexo 7.3.0|主题 Butterfly 5.3.5