
Unity游戏开发
文章平均质量分 91
Unity游戏开发中 技巧、方案、等记录。
NRatel
道阻且长,行则将至
展开
-
Unity屏幕适配——立项时设置
其中:1334 是设计高2 是Camera(相机)的Size属性用于定义相机视图的垂直大小。这个值实际上是相机视图的一半高度。100 UI坐标系相对世界坐标系的缩放倍数。原创 2025-03-14 12:02:29 · 1141 阅读 · 0 评论 -
Unity UI 框架相关的一些思考
UI 类型的选择组件式、树状聚合设计原因支持度和易用性的思考操作/生命周期顺序的思考复杂黑盒接口的异常处理思考。。。原创 2022-11-26 00:02:57 · 3091 阅读 · 0 评论 -
Unity UI 框架
Unity UI 框架组件化、树状聚合设计提供面板创建/销毁/显隐藏接口、显示状态维护提供控件创建/动态逻辑绑定/销毁接口提供元素半自动收集、代码自动生成层级管理焦点管理内置自动添加背景,及背景点击响应逻辑内置自动播放打开/关闭动画、动画状态维护内置返回键回退逻辑其他(自定义组件、屏幕适配、多语言支持等)原创 2022-11-19 17:27:32 · 10545 阅读 · 3 评论 -
HybridCLR 探索
HybridCLR 示例项目简析原创 2022-10-19 17:47:26 · 6880 阅读 · 0 评论 -
Unity 中的 .NET、Mono 和 IL2CPP
Unity 中的 .NET 概述;Mono 和 IL2CPP 对比;IL2CPP 原理概述等。原创 2022-10-15 23:11:10 · 3231 阅读 · 0 评论 -
.NET相关概念
在研究 HybridCLR 之前,需要先详细了解 .NET相关概念。包括:什么是.NET、.NET 开发和运行环境、.NET 多语言开发条件、.NET 跨平台运行原理(托管执行过程)、.NET实现、.NET 应用发布、Unity开发者应关心的重点等、原创 2022-10-04 03:42:36 · 2745 阅读 · 0 评论 -
我理解的游戏数据模型
一、游戏数据的意义游戏本质是数据(所有模块的数据,共同构成一个完整的游戏数据模型)。玩游戏,就是在与服务器交换数据,最后改变这些数据存档。二、数据划分1、按所属划分 系统数据:系统本身的配置数据(如主线有哪些章、地图是怎样的、有什么NPC等) 个人数据:包括,账号数据(账号ID,token等)、角色基本数据(如,昵称、头像、角色等级经验等)、角色在各系统下产生的数据(如,拥有的道具资源、签到时间、Boss挑战次数,好友列表等) 服务器数据:由服务器生成和维护的数据(如,排......原创 2022-07-29 21:35:22 · 2522 阅读 · 0 评论 -
Behavior Designer 重点简记
Behavior Designer 重点简记原创 2022-07-07 20:55:14 · 952 阅读 · 2 评论 -
Unity 中实现可复用的 GridView
源码已放入我的 github,地址:Unity-ListView一、确定使用参数“GridView的参数,要怎么设计才能强大且易用”,我想了很久之后看了UGUIGridLayoutGroup的源码,发现我还是 too young。它的设计已经很合理了,沿用即可。原因:1、StartCorner 和 StartAxis 可以确定出八种排布方式。2、Constraint 为 Flexible时的,Padding 可能影响自适应的行列数。3、Padding 和 对齐方式配合的也很巧妙...原创 2022-04-09 17:45:29 · 4008 阅读 · 5 评论 -
Unity的Package了解(2020.3)
已验证包----------------------------------------------------------2D Animation:com.unity.2d.animation为使用精灵实现骨骼动画提供了所有必要的工具和运行时组件。2D Pixel Perfect:com.unity.2d.pixel-perfect2D Pixel Perfect 包中包含 Pixel Perfect Camera 组件,可确保像素图像在不同分辨率下始终保持锐利清晰,并在运动中保持原创 2021-09-19 23:57:05 · 5627 阅读 · 0 评论 -
两个调整UI的便捷工具
一、两个需求在拼UI的过程中,经常需要手动干两件事。如果能够自动处理,可以节省大量时间,对性能也有好处(不必要的重叠可能导致不能合批)。(更重要的,这是布局强迫症的福音)需求1:为选中的多个同级物体增加一个Box,使其位置等于 所有选中物体的总中心使其大小等于 所有选中物体的总大小。执行后,选中物体的世界坐标均不变。结果预览1:创建包围盒需求2:调整选中物体,使其位置等于 所有子物体(不包含自身)的总中...原创 2021-08-28 21:34:21 · 550 阅读 · 0 评论 -
Unity接入激励视频广告,Admob+UnityAds+FacebookAudienceNetwork+Pangle。
前段时间用了两周时间接了这堆广告SDK,后来又改用其他方式接入了。浪费了工作量。记一下接入过程算是安慰吧。----------------------------------------------------原创 2021-05-16 19:46:56 · 9526 阅读 · 10 评论 -
Unity 扩展编辑器 笔记
文档原文: https://docs.unity3d.com/cn/2020.1/Manual/ExtendingTheEditor.htmlUnity 允许通过自定义 Inspector 和 Editor Windows 来扩展编辑器。并且可以通过自定义的 属性绘制器 来定义属性在 Inspector 中的显示方式。一、创建编辑器窗口 1、创建继承自 EditorWindow 的类 MyWindow。(脚本必须放在“Editor”文件夹下) 2、在 MyWindow 的 OnG...原创 2020-11-02 20:32:40 · 631 阅读 · 0 评论 -
Unity IMGUI 笔记
文档原文:https://docs.unity3d.com/cn/2020.1/Manual/GUIScriptingGuide.htmlIMGUI :即时模式 GUI用途: 1、创建游戏内调试显示和工具。(在每帧都会调用的 OnGUI() 中使用) 2、为脚本组件创建自定义检视面板。 3、创建新的编辑器窗口和工具以扩展 Unity 本身。一、IMGUI 基础知识 GUI 控件声明 关键:Type (Position, Content)。 1...原创 2020-10-30 12:30:56 · 569 阅读 · 0 评论 -
时间戳和日期转换的相关问题(牵扯时区)
每次时间计算一扯上“时区”,都会让我懵一下。这个换算过程一定程度上依赖使用的库,lua里和C#里有所差别,做一下记录。一、基础1、“时间戳” 国际统一。就是指 格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。2、“日期” 受时区影响。同一时刻下,“不同时区的日期” 要比“0时区的日期”快 “时区数 * 3600 秒”。------------------...原创 2020-01-03 23:11:49 · 5911 阅读 · 0 评论 -
Unity资源管理——AssetBundle构建/打包
1、为资源设置 assetBundleName 和assetBundleVariant。 可以在资源的 Inspector 上手动设置,也可以通过 AssetImporter 进行设置。AssetImporter importer = AssetImporter.GetAtPath(assetPath);importer.assetBundleName = abName;im...原创 2019-12-10 17:53:23 · 6250 阅读 · 0 评论 -
Unity资源管理——基础知识整理
部分参考自:https://docs.unity3d.com/Manual/index.htmlhttps://www.uwa4d.com/一、Unity中常见的资源类型1、原始资源文件(从外部创建并导入Unity,每一个类型都对应一个AssetImporter): Texture、Model、AudioClip、VideoClip、TextAsset、Font、其他。...原创 2019-12-03 18:01:31 · 2686 阅读 · 4 评论 -
Unity 协程探究
一、官方手册中的描述1、Manual/Coroutines函数在调用时, “从调用到返回” 都发生在一帧之内,想要处理 “随时间推移进行的事务”, 相比Update,使用协程来执行此类任务会更方便。协程在创建时,通常是一个“返回值类型 为 IEnumerator”、“函数体中包含 yield return 语句 ” 的函数。yiled return 可以暂停协程的执行,并在恰当时...原创 2019-11-26 22:16:40 · 2858 阅读 · 2 评论 -
利用 ILSpy 查看 C# 代码编译及运行真相
一、ILSpy 介绍ILSpy是一个开源的 .NET 反编译软件。开源地址 下载地址利用它,可以看到 C# 代码编译及运行真相,对代码优化非常重要!通常可以采用这两种方式: 1、写好 C# 源代码,生成 .dll文件,然后将 “.dll文件” 反编译为“IL代码”。可以查看 IL 代码运行过程。 2、写好 C# 源代码,生成 .dll文件,然后将 “...原创 2019-11-26 20:44:51 · 4195 阅读 · 1 评论 -
xLua 中的 util.async_to_sync 方法分析
这个方法的名字,让我产生很大兴趣。仔细看完后,发现其只能在协程中使用,和C# 的 await关键字一样。其实就是:在协程中,将 异步回调的方式 变为 同步等待的方式。原理是:异步操作开始后将协程挂起,等异步操作完成调用回调方法后恢复协程。一、源码分析--传入一个async方法local function async_to_sync(async_func, callback_po...原创 2019-11-21 20:57:52 · 2798 阅读 · 0 评论 -
UGUI 上 DOTween 动画轨迹与预期不符的问题。
运行环境:Unity 2018.4.0f1、DOTween v1.2.280、DOTweenPro v1.0.155原因: UGUI上的元素,都采用RectTransform 组件进行变换。在Inspector上显示的坐标都是anchoredPosition,而非 localPosition。anchoredPosition 和 localPosition 不是任何时候都相等的,不...原创 2019-11-19 19:05:17 · 1632 阅读 · 0 评论 -
Unity 中使用脚本模板
方法:在Unity安装目录的 D:\Program Files\Unity5.56f1\Editor\Data\Resources\ScriptTemplates 下添加新的模板文本文件。添加完成之后重启Unity。如:84-Shader__Empty.shader-NewEmpty.shader.txt其中:84- : 表示 显示排列的顺序。Shader__ : 表示 文件夹名(注...原创 2018-05-22 14:47:00 · 597 阅读 · 0 评论 -
Unity 中使用 Protobuf
一、protobuf3首先应该想到的是看一下官方的支持,Protobuf。Releases版下载地址选择最新的 protobuf-csharp-x.x.x.tar.gz 或 protobuf-csharp-x.x.x.zip压缩包。解压,进入如下目录。我需要其中的Google.Protobuf,因为接下来由游戏项目所需的.proto文件生成的C#文件,将会使用到Google...原创 2017-12-20 15:04:00 · 4751 阅读 · 0 评论 -
Unity 接入Facebook SDK
本文由本人原优快云搬迁至此,并做小幅修改。Facebook 提供了Unity SDK, 这比原生的方式接要方便很多。1、在开发者后台创建应用。后台地址:https://developers.facebook.com/apps/2、下载Unity版本的SDK, 导入Unity。下载地址:https://developers.facebook.com/docs/unity/3、配置方法如...原创 2018-11-19 12:46:04 · 14490 阅读 · 21 评论 -
浅谈游戏开发中逻辑与表现的分离
回顾之前做的几个Demo,做点总结。一、做法:为了更清晰,NRatel将一个游戏对象类拆分为两个类,如下:1、定义“纯粹的逻辑类”。 基本职责:对游戏对象的“逻辑值”进行定义、存储和计算。 关键要素:只关心逻辑数据,不考虑渲染问题。(如同在没有渲染能力的服务端写代码)。 不用继承Monobehaviour(Unity中)、不在任何系统自带的组件上存...原创 2019-03-26 17:39:27 · 10225 阅读 · 7 评论 -
Unity 中实现可复用的 ListView
源码已放入我的 github,地址:Unity-ListView前言实现一个列表组件,表现方面最核心的部分就是重写布局(Layout)。对于简单的列表,尤其是“Cell数量固定且较少、没有超页滚动展示”一类的需求,使用UGUI自带的布局组件进行布局即可。分别为:水平布局组件(Horizontal Layout Group)、竖直布局组件(Vertical Layout Gro...原创 2019-09-10 11:18:33 · 5587 阅读 · 5 评论 -
Unity 中 Screen坐标 转 Canvas坐标
一个常见的需求:UI上的物体跟随鼠标移动。必须要进行坐标转换的原因是, 1、设备实际的 “屏幕宽高” 和 “Canvas宽高” 不同,不能直接使用 “屏幕宽高”参与计算。 2、设备实际的 “屏幕宽高比” 和 “Canvas宽高比” 不同,使得在一些屏幕适配方案下,“Canvas宽高” 不等于 “设计分辨率的宽高” ,所以也不能直接使用 “设计分辨率的宽高” 参与计算。---...原创 2019-09-20 12:42:03 · 4517 阅读 · 0 评论 -
Unity Shader 的基本结构
代码结构及注释如下:// 此处定义 Shader 在材质Inspector上选择时的路径。Shader "NRatelShader/ShaderStructure"{ //属性定义 Properties { //此处定义属性。参考《UnityShader入门精要》第29-30页。 /* + ------------------...原创 2018-05-22 16:51:00 · 377 阅读 · 0 评论