Unity
文章平均质量分 56
画个小圆儿
胸怀文墨虚若谷,腹有诗书气自华
展开
-
Unity AssetsBundle一键为需要打包的预制体设置assetBundle名
【代码】Unity AssetsBundle一键为需要打包的预制体设置assetBundle名。原创 2023-06-27 15:13:07 · 930 阅读 · 0 评论 -
UnityWebRequest.Post报错
UnityWebRequest.Post(string uri, string postData) 这个方法在内部会先进行 URL 编码,进行请求时会报错,解决方法原创 2023-04-19 14:08:07 · 452 阅读 · 1 评论 -
Unity 设置ndk的时候报错
解放方案:如果出现以下报错,找到NDK文件夹下的source.properties文件,修改内容Pkg.Revision = /*按照提示报错内容,例如上图,把等号的内容修改成为 19.0.5232133*/原创 2023-02-24 16:47:35 · 364 阅读 · 0 评论 -
Unity中ab包压缩方案 LZMA 和LZ4
Unity中针对LZ4和LZMA两种压缩方式的比较和选择原创 2023-02-23 16:43:16 · 3749 阅读 · 0 评论 -
【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件学习
UniRx是一种基于Unity3D的响应式编程框架。UniRx就是Unity版本的Rx响应式扩展响应式就是观察者和定时器,扩展指的是LINQ的操作符。Rx响应式扩展的特点就是擅长处理时间上的异步的逻辑。用Rx响应式扩展的方式编程可以很好地组织大量异步与并行处理。UniRx重写了.Net的响应式扩展,主要作用是解决时间上异步的逻辑,让异步逻辑变得更加简洁和优雅。Unity3D通常是单线程,但是UniRx可以让多线程更容易。UniRx可以简化 UGUI 的编程,所有的UI事件可以转化为UniRx的事件流。转载 2023-02-21 19:56:42 · 3603 阅读 · 0 评论 -
Unity Editor扩展——查找UI预设中用到的所有图集
Unity Editor扩展——查找UI预设中用到的所有图集。 NGUI原创 2023-02-16 16:40:38 · 689 阅读 · 1 评论 -
Unity Editor扩展——查找所有用到某个图集的预设
Unity Editor扩展——查找所有用到某个图集的预设。 Ngui原创 2023-02-16 16:38:00 · 286 阅读 · 0 评论 -
Unity剧情编译器的实现 —— XNode
xNode是一个可视化脚本编辑工具,核心概念有Graph(图),Node(节点)和Port(接口,端点),Graph包含所有Node的列表,每个节点可以访问它的输入输出Port和它所属的Graph。如上图,每个方框是一个Node,它包含自己定义的属性,黄点是Port,整个背景可以看作是Graph,它是所有Node的容器。NodeEditor是所有自定义节点编辑器的基类,用于定制节点外观。参考官方的实例,定义一个Graph和两种Node。NodeGraph是所有图类型的基类。Node类是所有节点类型的基类。转载 2023-02-24 16:46:30 · 1774 阅读 · 0 评论 -
Unity中计时器管理类
该文中的计时器是基于Unity的生命周期中Update的实现,通过Time.deltaTime的累加作为计数器,将需要定时的对象类根据延长的时间排序,不用每一次Update时都对列表进行操作。原创 2023-01-19 16:51:39 · 552 阅读 · 0 评论 -
Unity中特效透明度动态设置
在Unity开发中,特效的透明度无法直接使用代码或者动画直接控制很不方便,便制作了一个一个脚本,专用来控制一个节点下的所有子节点的透明度。 在其父节点添加即可原创 2022-12-06 20:46:13 · 2165 阅读 · 0 评论 -
lua调用Unity中的对象工具实现
在lua中只使用自己管理的id,避免lua调用unity对象的性能消耗原创 2022-12-02 14:29:13 · 975 阅读 · 0 评论 -
【Unity】使用Profiler进行性能分析
游戏性能是非常重要的,学会使用 unity 自带的 profiler 分析工具是非常有必要的转载 2022-09-07 20:01:07 · 5974 阅读 · 0 评论 -
如何深入理解Lua数据结构和内存占用?
Lua底层数据结构的内存动态分配,一般情况下不太好估算内存占用。腾讯游戏学院专家Ross在本文剖析lua常见数据结构string和table的底层实现原理,并从中找到一般性的内存占用估算方法。转载 2022-08-23 11:16:30 · 2197 阅读 · 0 评论 -
NGUI无限滚动列表实现滑动条
NGUI下无限滑动列表的优化原创 2022-06-12 17:03:09 · 1006 阅读 · 1 评论 -
NGUI中UITable下文本内容过多无法自适应
修改NGUI中的UILable脚本原创 2022-06-10 22:52:04 · 327 阅读 · 0 评论 -
Unity编辑器 - TreeView控件笔记
用起来有一些规则,写个简单的案例以备查阅:using System.Collections.Generic;using UnityEditor.IMGUI.Controls;using UnityEngine;public class MyTreeView : TreeView { //搜索控件 SearchField _searchField = new SearchField(); List<object> allData = new List<转载 2022-03-17 19:32:00 · 1445 阅读 · 0 评论 -
Unity字体替换
前面的两个是在网上找的,属于编译器扩展的工具:1、原文链接(指定文件路径下所有的预制体的字体被替换):Unity编辑器拓展之十四:字体替换工具_静风霁的博客-CSDN博客_unity 字体替换using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.IO;using UnityEngine.UI;public class Repla原创 2022-03-15 19:56:43 · 6680 阅读 · 0 评论 -
NGUI中的UIGrid
在NGUI中,UIGrid是用来轻松的排列众多widget到固定大小格子的脚本。 编辑时和运行时都可以使用。如果想使用可变的格子单元大小,你可以使用UITable(可动态扩展)。Arrangement:排列的方向Horizontal : 水平排列Vertical : 垂直排列Cell Snap : 按子项当前的位置对齐子项其中Cell Snap 比较有趣,如果它的宽或高设置为0,不会去排列。源码如下:if (arrangement == Arrangement.CellSnap原创 2022-03-08 13:29:16 · 919 阅读 · 0 评论 -
Unity 纹理资源设置优化
我们打出app安装到真机上之后,发现桌面上的icon很模糊,有可能就是因为你的icon格式设置的问题。icon的格式设置改成如下(注意标红的地方):Texture: DefaultTexture: 2DsRGB(Color Texture): trueAlpha Source: Input Texture AlphaAlpha Is Transparency: true (如果有透明通道,一般是图标圆角,这个要设置为true)Advanced Non Power o...转载 2022-02-10 17:53:50 · 547 阅读 · 0 评论 -
Unity打开文件OpenFileDialog
一、打开文件对话框(OpenFileDialog)1、 OpenFileDialog控件的基本属性InitialDirectory:对话框的初始目录 Filter:获取或设置当前文件名筛选器字符串,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1 RestoreDirectory 控制对话框在关闭之前是否恢复当前目录 FileName:第一个在对话框中显示的文件或最后一个选取的...原创 2021-11-30 11:37:45 · 1836 阅读 · 0 评论 -
Unity中使用C#实现Zip包的压缩与解压
使用SharpZipLib库,下载地址为:http://icsharpcode.github.io/SharpZipLib/using System.IO;using System.Collections;using UnityEngine;using ICSharpCode.SharpZipLib.Zip;public static class ZipUtility{ #region ZipCallback public abstract class ZipCallbac转载 2021-10-18 20:09:20 · 2621 阅读 · 3 评论 -
Unity中AnimatorOverrideController
Animator Override Controller是用来配合Animator Controller使用的,它让Animator Controller变得更加实用,可以让不同的使用实例的在同一状态播放不同的动作,但保留原有的结构、参数和逻辑。代码:using System.Collections;using System.Collections.Generic;using UnityEditor.Animations;using UnityEngine;public class原创 2021-09-27 19:28:38 · 1043 阅读 · 1 评论 -
【 unity3d 】NGUI playTween与Tween动画 脚本的使用
转载:https://www.cnblogs.com/vitah/p/3967181.html 作者:博客园 vitahplay Tween 脚本要来播放Tween动画如:可以和按钮脚本,盒子碰撞器,Panel裁切 ,同时使用,做窗口转换一个按钮可以有多个playTween动画来移动多个不同的对象(带有Tween动画的脚本对象)可以有一个playWeen也可以对一个有多个Tween动画的脚本对象一:一个脚本可以添加多个PlayTween和多个Tween 动画1、如:一个返回按..转载 2021-09-11 16:05:47 · 799 阅读 · 0 评论 -
UGUI Panel的显示和隐藏优化
参考自:https://segmentfault.com/a/1190000012357091https://zhuanlan.zhihu.com/p/264833204unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢?可能大家一般开启/关闭界面的方法就是直接SetActive吧。这样做通常是可以的,简答快速地解决需求,但是它又两个问题:第一,Disable掉的物体上面的脚本也不运行了,而很多时候我们需要那个脚本运行。这样就不能用挂在自己身上原创 2021-08-19 15:13:53 · 1295 阅读 · 2 评论 -
用好Lua+Unity,让性能飞起来——Lua与C#交互篇
转载自:用好lua+unity,让性能飞起来——lua与c#交互篇前言在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用的状态。事实上即使到现在lua+unity的方案仍不能轻易的说可以肆意使用,要用好,你需要知道很多。因此,这篇文章是从一堆..转载 2021-07-23 11:32:49 · 774 阅读 · 0 评论 -
unity 自动寻路NavMesh
在项目开发中有时候,会用到unity自带的自动寻路系统NavMesh,今天就说下他的简单用法,NavMesh就是将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,进而在这些网格的基础上通过一系列的计算来实现自动寻路,在导航中,只需要给导航物体挂载到导航物体上,导航物体便会自行根据目标点来寻找符合条件的路线,并沿着该路线行进到目标点。一、实现物体通过自动寻路移动到指定地点1.首先就是编辑一个简易的场景:2.选中场景中的对象物体,将Static设置为Navigation Static复选框,u转载 2021-06-24 20:34:17 · 2306 阅读 · 0 评论 -
Unity中BehaviorTree插件
在Unity3D中,Behabior Designer应该是实现AI最好的工具了,Behavior Designer这个插件支持可视化编辑、支持可视化调试。提供一个Behabior Designer下载链接:https://pan.baidu.com/s/1cpNhLuPhDjrBri4x3mkjaA 密码:gjb5Bahavior行为树节点介绍:一、Composites组合节点组...原创 2021-06-05 16:39:40 · 2686 阅读 · 0 评论 -
Unity_2D游戏屏幕适配问题
1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度2.当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小(移动端的实际屏幕大小)相等。【注】这里的高度单位是经过像素到单位比即Pixels To Units换算的,Unity2D中这个比例的默认值是100,即100像素等于1单位。假设我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等。转载 2021-04-29 13:56:58 · 3007 阅读 · 0 评论 -
Unity使用FairyGUI切换Spine
先说Unity使用Spine动画,这是从其他地方抄来的:原文链接:https://blog.csdn.net/linshuhe1/article/details/79792432运行库导入关于运行库的导入,有两种方式:1. 从开源库导入下载 Spine 的 runtime 库:EsotericSoftware/spine-runtimes ,只需要将其中的 spine-csharp 和 spine-unity 两个部分导入到 Unity 中即可。2. 从官网插件导入当然,也可以到原创 2021-04-19 21:19:03 · 1988 阅读 · 1 评论 -
FairyGUI虚拟列表
先上代码为敬: hero_List.itemRenderer = RenderListItem; hero_List.defaultItem = "ui://o3ujglcdqacwi3t"; hero_List.SetVirtual(); hero_List.numItems = LocalConfigManager.Instance.GetDic_HeroPONum(); hero_List.SetVirtualAndL原创 2021-03-08 21:12:11 · 1367 阅读 · 0 评论 -
tolua, luaframework环境搭建
针对Unity2018、2019版,请注意我此博客发布时间,目前尤其是搭建2019版本时会有较大的问题,以后不知道会不会修复。先简单说一下 tolua 和 luaframework。前者的前身是C#tolua,由于unity只支持C#,IOS端热更新不了。所以作者大大写了个tolua工具使我们可以在Unity中使用lua,能够热更新。后者是基于tolua的UGUI框架,方便我们写UI。这两个东西都是个人写的(感觉他俩好厉害),所以更新方面可能不会很即时,Bug也会有一些。我先来说一下如何搭建l转载 2021-01-27 20:53:42 · 519 阅读 · 0 评论 -
FairyGUI笔记:下拉框
GComboBox我们可以在编辑器编辑下拉列表的项目,也可以用代码动态设置GComboBox combo = gcom.GetChild("n1").asComboBox;//items是列表项目标题的数组。combo.items = new string[] { "Item 1", "Item 2", ...};//values是可选的,代表每个列表项目的value。combo.values = new string[] { "value1", "value2", ...};//获得当前选中转载 2020-12-20 13:44:59 · 913 阅读 · 0 评论 -
Unity中读取.CSV文件
很多时候我们需要使用策划的Excel表来做游戏的静态数据配置, 而不是采用自己定义的xml或者U3D的scriptobject。1、创建csv文件自己写一个excel表格,然后另存为csv文件,文件名是test.csv。2、改成txt格式既然unity3d不认识csv,那么我们人工处理一下,很简单,像上一篇文章一样,简单粗暴的把csv的扩展名改成txt吧,谁让unity3d比较亲txt呢,更改后是test.txt,打开后是这个样子的:3、读取txt文件using Sy.原创 2022-04-07 16:58:02 · 4592 阅读 · 1 评论 -
unity Assetbundle资源管理与更新比对下载
在做项目时为了减少包体的大小,我们可以用unity自带的AssetBundle进行资源打包管理,本篇博客采用的方案是在资源打包时给每个资源一个特定的MD5值,写入文本进行保存资源名称和对应的MD5值,并把资源和存储的文本放入服务器中;然后本地运行项目时首先判断本地是否有已下载好的资源和文本,然后把本地的文本与服务器的文本进行比对,如果资源的MD5值不对应那么就下载此资源到本地进行替换同时更新相应的资源名和对应的MD5值;如果本地没有此资源也要重新下载资源到本地并把资源名和对应的MD5值下载到本地进行保存。转载 2020-07-06 18:43:52 · 1448 阅读 · 0 评论 -
Unity自定义拓展方法
我们在做项目的时候有些时候会遇到这种情况,使用别人封装的方法或者说Unity自带的某些方法,我们不能去修改那些类。所以C# 提供了一种巧妙的方式来让你扩充已有的类,也就是我们今天要讲的扩展方法。扩展方法由于很方便而被经常使用到,我们更愿意叫他语法糖豆(syntactic sugar),一个实用样例是Unity的Transform类,比如:你只想设置Transform.position中Vector3的x轴,而其它两个轴保持不变。拓展方法的条件1、必须声明为静态类2、必须声明为静态方法原创 2020-07-21 22:56:41 · 364 阅读 · 0 评论 -
Unity TCPSocket粘包和拆包问题
问题产生一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题。下面可以看一张图,是客户端向服务端发送包:1. 第一种情况,Data1和Data2都分开发送到了Server端,没有产生粘包和拆包的情况。2. 第二种情况,Data1和Data2数据粘在了一起,打成了一个大的包发送到Server端,这个情况就是粘包。3. 第三种情况,Data2被分离成Data2_1和Data2_2,并且Data2_1在Data1之前到达转载 2020-06-02 00:53:15 · 2980 阅读 · 2 评论 -
Unity中EventManager的实现方式
在进行Unity相关开发过程中我们总是需要响应很多的事件,如果没有一个集中的管理,代码就会变得很混乱,这时候EventManager就变的很重要了。这里根据Unity的官方教程:Events: Creating a simple messaging system,通过调用Unity的时间系统来进行封装。(留下备用)这里是Unity官方教程的实现方式,这里改成了单例模式。using System.Collections;using System.Collections.Generic;usi原创 2020-06-23 18:29:17 · 1747 阅读 · 1 评论 -
Unity 在2D中实现LookAt
由于Transform.LookAt是使Z轴看向目标,而2D基本是由X和Y轴构成的。所以在2D的游戏中,不太好使用。所以用代码实现一个2D的LookAt函数。例子:我们使怪物的眼睛一直看着云。怪物的眼睛朝向和localX轴的朝向一致,所以使怪物看着云,即将localx指向云。给怪物挂上脚本脚本编写写法一:void Update () { Vector2 direction = target.transform.position - transfor.转载 2020-06-11 10:30:48 · 1134 阅读 · 0 评论 -
检查图片是否完整(图片下载, 只有半张图问题)
下载图片 有时网络卡, 图片只有半张, 用这个 IsCompletedImage可以检查下载的图片是否完整, 可以检查jpg, bmp, gif, png.主要根据图片开头和结尾的特定字节来判断的.static void Main(string[] args) { string strFileName = @"c:\test.jpg"; if (IsCompletedImage(strFileName)) { Consol.转载 2020-05-26 17:31:48 · 1593 阅读 · 0 评论 -
Unity中控制脚本开启和关闭的问题
众所周知,当我们需要设置一个物体的开启和关闭时,需要设置: gameObject.SetActive(true); //开启 gameObject.SetActive(false); //关闭然后知道,控制脚本的开启和关闭应该就是:GameObject.Find("ObjectName").GetComponent<scriptName>().enabled = true; //打开脚本原创 2020-05-18 15:18:36 · 8497 阅读 · 0 评论