unity3d 重要框架,如 ugui、ngui、timeline、behavior designer、urp 等

ops/2025/1/1 5:16:08/

Unity3D 提供了许多重要的框架和工具集,帮助开发者快速实现游戏功能。这些框架各有特点,适用于不同的场景。以下是对常见的 Unity 框架(UGUI、NGUI、Timeline、Behavior Designer、URP)的详细分析,包括涉及的知识点和代码示例。


一、UGUI

1. 概述

UGUI(Unity Graphical User Interface)是 Unity 内置的 UI 系统,基于 GameObject 和组件,支持动态布局和响应式设计。

2. 涉及知识点

  • Canvas:UI 的根节点,控制渲染顺序和坐标空间。
  • RectTransform:UI 元素的布局组件,扩展了 Transform。
  • EventSystem:处理 UI 的事件系统(如点击、拖拽等)。
  • Graphic Raycaster:管理鼠标/触摸对 UI 元素的交互。
  • Animation:支持 UI 动画效果。

3. 代码示例

动态创建一个按钮并添加点击事件:

using UnityEngine;
using UnityEngine.UI;public class UGUIDemo : MonoBehaviour
{void Start(){// 创建 CanvasGameObject canvasObj = new GameObject("Canvas", typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));Canvas canvas = canvasObj.GetComponent<Canvas>();canvas.renderMode = RenderMode.ScreenSpaceOverlay;// 创建按钮GameObject buttonObj = new GameObject("Button", typeof(RectTransform), typeof(Button), typeof(Image));buttonObj.transform.SetParent(canvas.transform);// 设置按钮样式RectTransform rectTransform = buttonObj.GetComponent<RectTransform>();rectTransform.sizeDelta = new Vector2(200, 50);rectTransform.anchoredPosition = Vector2.zero;// 添加点击事件Button button = buttonObj.GetComponent<Button>();button.onClick.AddListener(() => Debug.Log("Button Clicked!"));}
}

二、NGUI

1. 概述

NGUI(Next-Gen UI)是 Unity 的第三方 UI 插件,设计灵活、性能较高,曾在 Unity 5.x 之前被广泛使用。

2. 涉及知识点

  • UIRoot:类似 Canvas 的功能,控制 UI 缩放和渲染。
  • Anchors:用于定位和对齐 UI 元素。
  • Atlas:优化 UI 纹理的工具,减少 Draw Call。
  • 事件系统:内置事件处理机制,如拖拽、点击。

3. 代码示例

创建一个简单的 UILabel:

// 假设已经安装 NGUI
GameObject labelObj = NGUITools.AddChild(parentObject, Resources.Load<GameObject>("UILabel"));
UILabel label = labelObj.GetComponent<UILabel>();
label.text = "Hello, NGUI!";
label.fontSize = 24;
label.color = Color.white;

三、Timeline

1. 概述

Timeline 是 Unity 的可视化动画工具,用于时间轴上的动画、音频和事件控制,适合实现过场动画和复杂行为序列。

2. 涉及知识点

  • Track:时间轴上的轨道,支持动画、音频、事件等。
  • Playable:可播放的内容。
  • Clip:轨道上的动画片段。
  • Signal:触发自定义事件。

3. 代码示例

动态创建一个 Timeline:

using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;public class TimelineDemo : MonoBehaviour
{public GameObject animatedObject;void Start(){// 创建 PlayableDirectorvar director = gameObject.AddComponent<PlayableDirector>();// 创建 TimelineAssetvar timeline = ScriptableObject.CreateInstance<TimelineAsset>();director.playableAsset = timeline;// 创建 AnimationTrackvar animationTrack = timeline.CreateTrack<AnimationTrack>(null, "AnimationTrack");var clip = animationTrack.CreateDefaultClip();clip.asset = animatedObject.GetComponent<Animator>();// 播放director.Play();}
}

四、Behavior Designer

1. 概述

Behavior Designer 是 Unity 的行为树插件,用于设计 AI 行为逻辑,直观且易于扩展。

2. 涉及知识点

  • Behavior Tree:以树形结构定义行为逻辑,包括选择器(Selector)、序列(Sequence)等节点。
  • Task:行为树的基本单元,可以自定义任务逻辑。
  • Decorator 和 Conditional:用于控制行为执行的条件。

3. 代码示例

创建自定义任务:

using BehaviorDesigner.Runtime.Tasks;public class PatrolTask : Action
{public override void OnStart(){Debug.Log("Start Patrol");}public override TaskStatus OnUpdate(){// 执行巡逻逻辑Debug.Log("Patrolling...");return TaskStatus.Success; // 或者 Failure/Running}
}

五、URP(Universal Render Pipeline)

1. 概述

URP 是 Unity 提供的可编程渲染管线,优化了性能,适合移动端和中高端设备。

2. 涉及知识点

  • Shader Graph:可视化的着色器编辑器。
  • 渲染管线:通过 C# 实现自定义渲染逻辑。
  • Post-processing:内置后处理效果。
  • Lighting:支持实时和烘焙光照。

3. 代码示例

自定义渲染特效:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;public class CustomRenderFeature : ScriptableRendererFeature
{class CustomRenderPass : ScriptableRenderPass{public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData){CommandBuffer cmd = CommandBufferPool.Get("CustomRenderPass");// 添加渲染命令cmd.ClearRenderTarget(true, true, Color.red);context.ExecuteCommandBuffer(cmd);CommandBufferPool.Release(cmd);}}CustomRenderPass renderPass;public override void Create(){renderPass = new CustomRenderPass();renderPass.renderPassEvent = RenderPassEvent.AfterRenderingTransparents;}public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData){renderer.EnqueuePass(renderPass);}
}

总结

框架特点适用场景
UGUI内置 UI 系统,易于使用,支持响应式设计一般 UI 开发,动态布局
NGUI第三方插件,高性能,可自定义老项目或对性能要求较高的项目
Timeline可视化时间轴工具,适合动画控制过场动画,复杂动画序列
Behavior Designer可视化行为树工具,直观的 AI 设计游戏 AI,NPC 行为逻辑
URP可编程渲染管线,性能优化显著,支持可视化 Shader 编辑移动端或中高端设备的渲染

通过熟悉这些框架,可以根据项目需求灵活选用并高效完成游戏开发任务。


http://www.ppmy.cn/ops/146004.html

相关文章

嵌入式硬件面试题

1、请问什么是通孔、盲孔和埋孔&#xff1f;孔径多大可以做机械孔&#xff0c;孔径多小必须做激光孔&#xff1f;请问激光微型孔可以直接打在元件焊盘上吗&#xff0c;为什么&#xff1f; 通孔是贯穿整个PCB的过孔&#xff0c;盲孔是从PCB表层连接到内层的过孔&#xff0c;埋孔…

渗透测试面试问题

思路流程 信息收集 服务器的相关信息&#xff08;真实ip&#xff0c;系统类型&#xff0c;版本&#xff0c;开放端口&#xff0c;WAF等&#xff09;网站指纹识别&#xff08;包括&#xff0c;cms&#xff0c;cdn&#xff0c;证书等&#xff09;&#xff0c;dns记录whois信息&…

【信息系统项目管理师】高分论文:论信息系统项目的资源管理(阳光信访工作平台)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、全面分析,规划项目资源管理二、活动的资源估算三、科学合理,获取资源四、注重激励,建设团队五、协调配合,管理好项目团队六、控制资源论文 随着信息化时代的发展,新形势下的信访工作作为化解社会…

支持最新 mysql9的workbench8.0.39 中文汉化教程来了

之前在 B 站上发布了 mysql8 workbench 汉化教程&#xff0c;一年多来帮助很多初学者解决了不熟悉英文的烦恼。 汉化视频可以访问&#xff1a; 2024最新版mysql8.0.39中文版mysql workbench汉化 中文升级 旧版汉化报错解决_哔哩哔哩_bilibili MySql Workbench汉化_哔哩哔哩_…

java常见类库

StringBuffer类 String和StringBuffer的区别 String 不可变性&#xff1a;String 类是不可变的&#xff0c;这意味着一旦创建了一个 String 对象&#xff0c;其值就不能改变。每次对 String 进行修改&#xff08;如连接、替换等操作&#xff09;都会产生新的 String 对象&…

2、C#基于.net framework的应用开发实战编程 - 设计(二、三) - 编程手把手系列文章...

二、设计&#xff1b; 二&#xff0e;三、构建数据库&#xff1b; 此例子使用的是SQLite数据库&#xff0c;所以数据库工具用的SQLiteStudio x64&#xff0c;这个是SQLite专用的数据库设计管理工具&#xff0c;其它的数据库管理工具比如DBeaver的使用请见实战工具系列文章。 1、…

React 前端框架入门

这里写目录标题 React 前端框架入门什么是 React&#xff1f;核心特性基本概念1. JSX2. 组件3. State 和 Props4. 生命周期5. React Hooks React 应用示例项目结构如何启动 React 项目参考资料 React 前端框架入门 什么是 React&#xff1f; React 是由 Facebook 开发并开源的…

大模型推理:vllm多机多卡分布式本地部署

文章目录 1、vLLM分布式部署 docker镜像构建通信环境配置 2、其他大模型部署工具3、问题记录参考文献 单台机器GPU资源不足以执行推理任务时&#xff0c;一个方法是模型蒸馏量化&#xff0c;结果就是会牺牲些效果。另一种方式是采用多台机器多个GPU进行推理&#xff0c;资源不…