Unity Editor学习笔记

一、生命周期

void Awake():
void OnGUI():绘制窗口时调用
void Update(): 更新
void OnFocus():当窗口获得焦点时调用一次
void OnLostFocus():当窗口失去焦点时调用一次
void OnHierarchyChange():当Hierarchy视图中的任何对象发生改变时调用一次
void OnProjectChange():当Project视图中的资源发生改变时调用一次
void OnInspectorUpdate(){ this.Repaint(); }:窗口面板更新,必须重绘,否则不会更新
void onSelectionChange():{
//当窗口出去开启状态,并且在Hierarchy视图中选择某游戏对象时调用
foreach(Transform t in Selection.transforms){
//有可能是多选,因此Selection是个数组或者其他结构类型来的
}

二、Unity编辑器的扩展:IMGUI(Immediate Mode GUI)

1、定义:

所有关于 Editor 的相关 UI,包括 Inspector、Hierarchy、Window、Game 视图上动态创建的那些半透明 UI、还有 Scene 视图上可添加的辅助显示 UI.

2、名字来源于两种类型的UI系统:immeditate 和 retained

  • retained:当设置好各种组件(例如Text、button之类的信息)后,或者修改它们的相关属性,这些组件的相关信息和改动会被保存下来(retained),系统会根据这些新的信息来绘制响应事件。UGUI即是典型的retained mode GUI。
  • immediate:系统不会保存UI控件上的各种信息,不会用上次的状态继续工作,而是反复询问这些控件的信息。例如OnGUI()绘制。

3、相关类介绍

  • Editor类:继承ScriptableObject,只能定制针对脚本的扩展,从脚本内容欧冠在Inspector里的显示布局,到变量在Scene视图的可视化编辑

  • EditorWindow类:继承ScriptableObject,主要是扩展编辑器的功能,有独立的窗口,使用OnGUI函数绘制2D的UI

  • 在Game视图上显示的ingameGUI主要是GUI和GUILayout,另外与之对应的editor-only类是editorGUI和EditorGUILayout两个类。

  • GUI和EditorGUI提供的接口为Fiexed Layout,基本上都是需要传入一个rect变量指定控件的位置和大小,当窗口大小改时控件会保持不变。可以将代码放到GUI.BeginGroup()和GUI.EndGroup()之间将控件进行分组或者划分子区域进行布局。

  • GUILayout和EditorGUILayout则是与前面两个对应的AutoLayout类,不需要指定控件的位置和大小,会根据当前显示区域的大小自动调整布局适应变化。多个控件默认是从上到下的顺序排序,可以用GUILayout.beginHoriztontal(),GUILayout.EndHorizontal(),GUILayoutBeginVertical(),GUiLayoutEndVertical()将代码写到这些调用之间进行水平或者垂直排列控件。

  • GUIUtility类提供了一些工具方法,如获取控件id,转换Screen和GUI之间的坐标等。

  • EditorGUIUtility类是针对Editor提供一些工具方法,除了GUIUtility那些方法外还增加了很多有用的方法,如获取内建资源图标、高亮选中某个物体、产生复制粘贴命令等。

  • Event:该类包含了所有用户输入(按钮、鼠标点击、UI相关布局和绘制事件)。调用Event.current获得当前事件信息,查看EventType枚举定义可查询全部可用类型事件。这个信息在OnGUI、OnInspector、onSceneGUI里面都可以使用以处理一些特定逻辑。

三、自定义控件

  • GUIContent:定义了控件需要显示什么,包含三个基本要素(图片、文本、鼠标停留的提示信息tooltip,play mode运行时tooltip无效)。
  • GUIStyle:定义了控件要如何显示,包括Normal Hover Active等状态切换显示、文字大小颜色、指定图标显示位置等各种信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Unity3D时,以下是一些重要的笔记: 1. Unity3D基础知识: - 游戏对象(Game Objects)和组件(Components):了解游戏对象的层次结构和组件的作用。 - 场景(Scenes)和摄像机(Cameras):学会如何创建场景并设置摄像机视角。 - 材质(Materials)和纹理(Textures):掌握如何创建和应用材质和纹理。 - 动画(Animations):学习如何创建和控制游戏对象的动画。 2. 脚本编程: - C#语言基础:了解C#语言的基本语法和面向对象编程概念。 - Unity脚本编写:学习如何编写脚本来控制游戏对象的行为和交互。 - 常见组件和功能:掌握常见的Unity组件和功能,如碰撞器(Colliders)、刚体(Rigidbodies)、触发器(Triggers)等。 3. 游戏开发流程: - 设计游戏关卡:了解如何设计游戏场景和关卡,包括布局、道具、敌人等。 - 游戏逻辑实现:将游戏规则和玩家交互转化为代码实现。 - UI界面设计:学习如何设计游戏中的用户界面,包括菜单、计分板等。 - 游戏优化和调试:优化游戏性能,解决常见的错误和问题。 4. 学习资源: - Unity官方文档和教程:官方提供了大量的文档和教程,逐步引导你学习Unity3D。 - 在线教程和视频教程:网上有很多免费和付费的Unity教程和视频教程,可根据自己的需求选择学习。 - 社区论坛和博客:加入Unity开发者社区,与其他开发者交流并获取帮助。 通过系统地学习这些内容,你将能够掌握Unity3D的基础知识并开始开发自己的游戏项目。记得不断实践和尝试,不断提升自己的技能!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值