首页/新闻资讯/正文详情

关于U3D的学习

发布时间:2026/9/24 13:52:32 来源:云帆数科 栏目:资讯中心
关于U3D的学习
将绑定好的 Sprite 拖入场景中,为其添加Sprite Skin脚本。点击Create Bones按钮,生成骨骼在 C# 中,自定义特性(Attribute)的命名有个约定俗成的“语法糖”:如果你定义的类名是XXXAttribute,那么你可以在使用的时候省略掉Attribute后缀,只写[XXX]public class TestAttribute : Attribute {} [Test] // 等价于 [TestAttribute] 例如: public class MyCustomAttribute : Attribute { public MyCustomAttribute(string msg) { } } [MyCustom("Hello")] // OK,自动推断 MyCustomAttribute public class MyClass {}PS:Attribute 类 (System) | Microsoft Learn实现原理1、隐式接口实现:正常函数实现即可例如:public void Init(){}2、显式式接口实现:函数前添加接口作为前缀,并且函数前不能再使用修饰符修饰例如:void IInterface.Init(){}public interface IUpdate { void Update(); } public class InputManager : SingleTonInputManager, IUpdate { void IUpdate.Update() { // 在这里实现具体的更新逻辑 // 例如:处理输入事件 } } InputManager inputManager = InputManager.Instance; // 获取单例实例 IUpdate updateInterface = inputManager; // 将实例转换为IUpdate接口类型 updateInterface.Update(); // 调用Update方法使用显式接口成员执行体通常有两个目的:1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。1.Event类的用途Event类在编辑器脚本中非常有用,尤其是在处理自定义编辑器窗口(EditorWindow)或自定义编辑器控件(Editor)时。通过Event类,你可以检测和处理各种输入事件,从而实现自定义的交互逻辑。2.Event类的主要属性和方法type:事件的类型,如EventType.MouseDown、EventType.MouseUp、EventType.KeyDown等。button:鼠标按钮(左键、中键、右键)。keyCode:按键的键码。delta:鼠标移动的相对位置。.mousePosition:鼠标的位置。Use:标记事件已经被处理。3.Event.Use方法Event.Use方法用于标记事件已经被处理,这样 Unity 就不会将该事件传递给其他处理程序。这在处理自定义控件时非常重要,可以避免事件被多次处理。Layer 配置存储在项目的ProjectSettings/TagManager.asset文件中关于RectTransform: 下面是全屏显示RectTransform transform = GetComponentRectTransform(); transform.anchorMin = Vector2.zero; transform.anchorMax = Vector2.one; transform.anchoredPosition = Vector2.zero; transform.sizeDelta = Vector2.zero;anchoredPosition: (Left - Right )/2, (Bottom-Top)/2sizeDelta: -(Left + Right),-(Top+Bottom)左下,右上RectTransform rectTransform = GetComponentRectTransform(); Debug.Log("rectTransform.offsetMin:" + rectTransform.offsetMin); Debug.Log("rectTransform.offsetMax:" + rectTransform.offsetMax);朝向的旋转角度Vector3 targetPosition = new Vector3(10, 0, 10); // 目标点位置 Vector3 cameraPosition = new Vector3(0, 0, 0); // 相机位置 Quaternion rotation = Quaternion.LookRotation(targetPosition - cameraPosition, Vector3.up); { Vector3 direction = transform.position - B.transform.position; // 归一化方向向量 direction.Normalize(); // 计算旋转角度 Quaternion rotation = Quaternion.LookRotation(direction); // 将旋转角度应用到点 A 上 transform.rotation = rotation; }Unity 中的渲染队列是按照从低到高的顺序进行渲染的,队列值越小越先渲染。Background(队列值 1000):用于渲染背景,如天空盒,是最早被渲染的队列。Geometry(队列值 2000):主要用于渲染不透明物体AlphaTest(队列值 2450):用于需要进行 Alpha 测试的物体,渲染顺序在Geometry之后。Transparent(队列值 3000):用于渲染半透明物体,渲染顺序在AlphaTest之后。Overlay(队列值 4000):用于渲染覆盖效果,如镜头光晕,是最后被渲染的队列。Material mat mat.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Overlay;-----------------------------------------------------------点积的计算公式是:Dot(A,B)=∣A∣×∣B∣×cos(θ)其中,∣A∣ 和 ∣B∣ 是向量的长度,θ 是两个向量之间的夹角。如果两个向量方向相同(夹角为0°),点积为正值。如果两个向量方向相反(夹角为180°),点积为负值。如果两个向量垂直(夹角为90°),点积为0。System.Math.Sign是一个数学函数,用于返回一个数值的符号。它的返回值为:1,如果输入值为正数。-1,如果输入值为负数。0,如果输入值为0。-----------------------------------------------------------System.DateTime.UtcNow返回从格林威治时间1970年1月1日00:00:00至今的总秒数int unixTimestamp = 1631021641; // 假设这是你的int数值 DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // 1970年1月1日作为起点 dateTime = dateTime.AddSeconds(unixTimestamp).ToLocalTime(); // 将秒数加到起点时间上,并转换为本地时间 // 如果你想要保留UTC时间,可以不调用ToLocalTime()方法 // dateTime = dateTime.AddSeconds(unixTimestamp); // 直接得到UTC时间 DateTime dateTime = DateTime.Now; // 假设这是你要转换的时间 string timeString = dateTime.ToString("HH

相关推荐

DC24V电源端口EMC设计:TVS管选型与PCB布局避坑实战指南
DC24V电源端口EMC设计:TVS管选型与PCB布局避坑实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 13:52:25

城市大脑数字底座一网统管方案:从云平台选型到事件闭环落地
城市大脑数字底座一网统管方案:从云平台选型到事件闭环落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 13:52:25

PiKVM 为 VNC 引入 H.264:从协议倡议、IANA 注册到 TigerVNC 客户端落地的完整历程
PiKVM 为 VNC 引入 H.264:从协议倡议、IANA 注册到 TigerVNC 客户端落地的完整历程

文档教程 【免费下载链接】pikvm Open and inexpensive DIY IP-KVM based on Raspberry Pi 项目地址: https://gitcode.com/gh_mirrors/pi/pikvm 点击查看 免费下载 H.264 视频编码相比传统 VNC 的 JPEG 帧压缩能显著节省网络流量、提升弱网环境下的操作响应性。本… · 2026/9/24 13:52:13

STM32+W5500硬件协议栈UDP通讯实战:驱动移植与避坑指南
STM32+W5500硬件协议栈UDP通讯实战:驱动移植与避坑指南

简介:基于STM32F103与W5500以太网模块的UDP通信完整工程,面向物联网嵌入式开发者,解决MCU通过SPI接口接入以太网并实现UDP收发的问题。例程涵盖DHCP动态获取IP、创建UDP、等待客户端连接、关闭连接等关键流程,可直接在Keil中打开&… · 2026/9/25 5:57:36

《电力系统自动化》附录查找全攻略:从官网到作者邮件的实操指南
《电力系统自动化》附录查找全攻略:从官网到作者邮件的实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:57:36

单片机C++开发实战:从C升级到C++的动机、工具链与零开销抽象
单片机C++开发实战:从C升级到C++的动机、工具链与零开销抽象

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:57:36

Altium Designer库导入全攻略:原理图库与封装库安装及常见问题解决
Altium Designer库导入全攻略:原理图库与封装库安装及常见问题解决

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:57:30

Adreno Neural Fusion:UE5移动端神经-图形融合渲染技术解析
Adreno Neural Fusion:UE5移动端神经-图形融合渲染技术解析

1. 项目概述:这不是一次常规升级,而是一次GPU架构级的“神经重布线”最近刷到“高通第六代骁龙8超级至尊版强化支持虚幻引擎5,推出Adreno Neural Fusion”这个标题,不少同行第一反应是——又一个营销话术?我盯着看了三… · 2026/9/25 5:57:30

Maxwell 3D线圈磁场仿真从建模到提速:有限元电磁设计实战要点
Maxwell 3D线圈磁场仿真从建模到提速:有限元电磁设计实战要点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:57:30

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码