
unity
文章平均质量分 77
童小豆子
这个作者很懒,什么都没留下…
展开
-
Unity新版Input System(二)
序言上一篇文章简单介绍了input system的用法。但是真正项目中,肯定还是会用到非常复杂的输入情况的。比如组合按键,长按,短按等等情况。原创 2021-06-01 11:53:58 · 2855 阅读 · 2 评论 -
Unity中AssetDatabase相关的笔记(坑)
如果在编辑器模式下,需要加载资源,除了使用assetbundle外,更方便的是使用Resource.Load和AssetDatabase这个类。相比较而言,AssetDatabase类在编辑器模式下,更易操作。当然,这个类不仅仅只是用于资源的加载。 本篇列举了一些关于AeestDatabase类的一些用法和坑(长期更新) 1、资源加载 使用A...原创 2019-12-24 21:04:36 · 2980 阅读 · 0 评论 -
ET服务端框架学习——ActorLocationSender信使组件
最近在看ET的服务端(5.0版本)框架,突然发现了一点一直搞不太懂。是关于ActorLocationSender组件的。这个类管理一个待发送消息的队列,还有一个ETTaskCompletionSource对象用于获取异步方法的值。该类在初始化后,会遍历队列中的元素,执行发送任务。public static async ETVoid UpdateAsync(this ActorLocation...原创 2019-10-26 11:10:09 · 595 阅读 · 0 评论 -
ET框架学习——消息系统之六
本篇讲解下NetworkComponent组件,框架在初始化的时候,挂载的是NetOuterComponent组件,该组件继承自NetworkComponent组件,内部指定了使用了网络协议为TCP。 NetworkComponent Dictionary<long, Session> sessions字典,存放的是使用到的和Channel相关的Se...原创 2019-03-06 10:48:00 · 1220 阅读 · 0 评论 -
ET框架学习——消息系统之五
上一篇文章简单学习了一下AChannel和对应的派生类。这里来学习和Channel对应的Server相关的类 和Channel一样,Server也是对应一个基类AServer和派生类。并且派生类也是对应TCP,KCP和WebSocket三个。KCP和WebSocket都相对来说比较陌生。这里只看一下TServer相关的内容。 AServer ...原创 2019-03-03 17:35:08 · 1239 阅读 · 0 评论 -
ET框架学习——消息系统之四
这篇讲一下AChannel基类和其相关的派生类。AChannel类看名字应该是频道的意思,看代码是和消息内容相关的类。 AChannel 关于AChannel在我之前的文章里面有讲到过,大家可以看这里。 内容不是很多,主要是定义了两个事件,用于放置回调方法。还有和这两个事件相关的调用方法。以及一些其他。 KChannel 框架中有3个Chan...原创 2019-03-01 17:33:45 · 2213 阅读 · 0 评论 -
ET框架学习——消息系统之二
AChannel AChannel类继承自ComponentWithId。内部保存了一些和网络传输相关的字段(AService,IPEndPoint等),还有两个委托Action<AChannel, int> errorCallback和Action<MemoryStream> readCallback。这两个委托和消息传输的结果相关,分别用于保存错...原创 2019-02-19 16:23:15 · 1124 阅读 · 0 评论 -
ET框架学习——消息系统之三
鉴于我之前对于游戏的网络开发部分没有经验。后面关于ET消息系统的学习都将参考这位朋友Norman_Lin的博客来学习。后面会自己再来调整文章的顺序,结构等。 CircularBuffer 这个应该是ET框架中消息相关的类,继承自Stream类。ChunkSize字段的代表一个字节数组的最大长度。后面两个队列应该是用于存储消息流的。public int Ch...原创 2019-02-26 19:30:49 · 1104 阅读 · 0 评论 -
ET框架学习——ConfigComponent组件和ACategory<T>类
ACategory<T>类 ACategory<T>抽象类继承自ACategory类,T实现接口IConfigpublic abstract class ACategory : Object{ public abstract Type ConfigType { get; } public abstract IConfig GetOne();...原创 2019-02-06 17:17:06 · 556 阅读 · 0 评论 -
行为树学习(之一)
首先可以看看这篇文章,这里面详细介绍了关于BehaviourTree中的各个节点的详细意义。这里还有一篇文章,是官方文档的翻译,也可以学习一下,不过这里面有一个很关键的点没有说清楚,就是关于共享变量的设置,具体可以看看这篇文章,里面有详细的设置过程。这算是一个坑吧。具体步骤我也贴出来了,如下图所示:我要共享的变量是SharedTransform,所以选择Transform类...原创 2019-03-22 14:54:52 · 661 阅读 · 0 评论 -
ET框架学习——消息系统之七,从init走一遍网络消息
网络组件创建 ET中的网路组件在客户端就是NetOuterComponent,当然,这是包装过的。这里面只是指定了所使用的网络类型,demo中默认使用的是TCP类型的网络。这里使用的组件工厂添加组件,所以会默认执行Awake事件。 NetOuterComponent组件的Awake事件是定义在类NetOuterComponentAwakeSyst...原创 2019-03-30 16:18:27 · 1395 阅读 · 0 评论 -
ET服务端框架学习——消息相关组件
这里要先说明一下ET框架中的消息类型,可以参考这篇文章《ET框架---消息类型浅析》: 1、客户端发送给服务器的消息 C2S 1)不需要与其他服务器通信(普通消息) a、不需要返回结果(普通的普通消息) b、需要返回结果(普通的RPC消息)...原创 2019-04-08 16:44:52 · 1314 阅读 · 0 评论 -
ET服务端框架学习——服务端入口
ET框架有一个好处就是很多组件在客户端和服务端几乎都是可以通用的。比如EventSystem组件,和在客户端是一样的使用逻辑,具体可以看这篇文章《ET框架学习——EventSystem类》。 在加载完服务端的Hotfix和Model的dll后,开始后面就是开始读取服务端的配置,并根据配置加载相应的组件。服务端的配置的读取方法使用的是CommandLine,该类用于...原创 2019-04-03 15:10:08 · 3234 阅读 · 2 评论 -
ET服务端框架学习——寻路demo
这里用master版本的寻路来学习一下ET的服务端,ET的寻路部分是放在服务端计算的,然后将路径的点集发送到客户端,有客户端具体执行移动命令。 在此之前,先来看看ET客户端的关于寻路部分的demo。 UnitPathComponent组件 该组件是执行寻路移动的核心组件之一。 该组件没有接通事件系统。StartMove(M2C_Pathfind...原创 2019-04-24 17:37:30 · 1606 阅读 · 2 评论 -
ET框架学习——消息系统之七
最近一直在搞这个消息流转路径,做了几张图:Connect&ReciveSend数据包装变化原创 2019-08-19 10:21:12 · 469 阅读 · 1 评论 -
项目图集优化之一
项目中的图集已经优化了很多了。我目前的工作是看看还有没有可以优化的空间。当然这项工作目前还在做。在开始这项工作之前,做了一些准备工作——数据的采集。我的思路是,不管后面要如何动手,先要了解项目中图集的一些基本数据,例如:图集的引用情况,图集的大小等等。当然,具体需要什么数据,也是不断在完善过程中的。就像我,光是数据的采集就改了三版。所以,经验确实很重要。 写了一个小工具...原创 2019-09-27 11:41:46 · 425 阅读 · 0 评论 -
ET框架学习——消息系统之一
OpcodeTypeComponent组件和MessageDispatherComponent组件都是消息系统的组成部分。这里就来好好捋一捋ET的消息系统。从我目前看到现在来说,这个消息系统包括一系列的事件接口,特性,和消息类型的识别码等等部分,这里先撇开前后端通讯部分的消息。 消息系统中的抽象类,接口 public interface IMHandler{ void...原创 2019-01-23 16:49:55 · 2156 阅读 · 0 评论 -
ET框架学习——OpcodeTypeComponent组件和MessageDispatherComponent组件
OpcodeTypeComponent OpcodeTypeComponent组件接入了Awake和Load两个事件,会在事件系统收集反射信息和该组件被创建时,执行Load方法。 该类中维护了一个字典Dictionary<ushort, object> typeMessages和一个DoubleMap<ushort, Type> opc...原创 2019-01-23 11:25:50 · 1224 阅读 · 0 评论 -
UGUI实现ScrollView无限滚动
抽空做了一个UGUI的无限滚动的效果。只做了一半(向下无限滚动)。网上也看了很多教程,感觉还是按照自己的思路来写可能比较好。搭建如下:content节点不添加任何组件。布局组件默认是会重新排版子节点的,所以如果子节点的位置变化,会重新排版,不能达到效果。Size Fitter组件也不加,自己写代码调整Size大小(不调整大小,无法滑动)。 最主要的实现过程就是用Queue...原创 2018-05-02 12:05:46 · 4216 阅读 · 1 评论 -
循环链表的小效果
今天在做UGUI的ScrollView的无限滚动效果,一开始想错了逻辑,不过误打误撞实现了一种小效果(虽然目前还不知道用在哪儿。。。)。这种效果类似于咬尾蛇的那种,每个元素的移动都会引起链式效应,使得其他元素一起移动。具体效果如下:可以看到,00~04的cell乡下移动时,最末尾的016~019的cell补位到原先00~04的位置,而05~015则顺次向下移动。 在做...原创 2018-04-27 12:47:25 · 453 阅读 · 0 评论 -
ET框架学习——ReferenceCollector类
ReferenceCollector类 看这个类在inspector中的表现,猜想这个类应该有引用对象的功能。 ReferenceCollectorData类序列化了一个名字key和object对象。就是对应上面的"LobbyCanvas"和LobbyCanvas对象。这个类有Serializable特性,所以该类是可以被序列化的。 Ref...原创 2018-08-16 11:34:57 · 4401 阅读 · 0 评论 -
unity中的SerializedObject和SerializedProperty类
SerializedObject和SerializedProperty是提供通用的方式编辑对象属性的类,可自动处理预制件和UI。01 构造函数接受Object对象或者数组。另一种额外接受一个Object对象。 isEditingMultipleObject() 是否可以序列化多对象。maxArraySizeForMultiEditing() ...原创 2018-08-15 20:07:36 · 10359 阅读 · 0 评论 -
ET框架学习——Component基类和几个派生类,管理类
Init类是ET框架接触的第二个脚本。该类开始就设置了一个SynchronizationContext对象。 SynchronizationContext类是用于多线程之间通信的一个类,其在通讯中充当了个传输者的角色(详情可以参看这篇文章)。OneThreadSynchronizationContext类继承自SynchronizationContext。内部维护了一个Co...原创 2018-08-17 15:23:19 · 1749 阅读 · 0 评论 -
tolua框架学习(九)
在lua中使用输出函数 案例14讲的是在lua中使用输出函数。lua片断是一个测试射线的方法,在调用.Physics.Raycast()时,返回了两个变量,一个bool值,一个hit。将原本C#中的输出参数变成了返回值直接返回。调用方法和其他的一样处理。值得注意的一点是:输出参数在lua中是不需要传参的,传递nil即可,这一点可以参见我在luaInterface中的测试(点...原创 2018-10-29 19:58:26 · 847 阅读 · 0 评论 -
tolua框架学习(八)
第12个案例,讲解的是在lua中对Unity中的一些类的使用,比如Color,GameObject,ParticleSystem等。这里是直接通过UnityEngine命名空间获取了该类,可以通过对应的命名空间+类名在lua获取该类。如通过 UnityEngine.UI.Image,可以获取Image类。在lua中创建一个gameObject使用的方法是:GameObject('g...原创 2018-10-27 17:38:00 · 386 阅读 · 0 评论 -
tolua框架学习(十一)
AssetBundle测试 案例18讲的是对于加载AB包的测试。整个过程模拟的加载资源,然后进入lua主入口的过程。获取到AB资源后,按照资源数量,获取到资源后,添加到LuaFileUtils内部保存的字典中去。最后启动lua主入口。 使用json 案例19将的是使用json。 关于json的简单介绍可以参考这篇文章。本例的lua片段中req...原创 2018-11-13 11:00:50 · 464 阅读 · 0 评论 -
tolua框架学习(十)
lua中对int64的使用 案例16讲的是lua中对int64的使用。lua5.1.x都是不支持int64和uint64的。Lua5.3已经支持了这两种数据类型。lua片段中有一些对int64进行处理的函数: a、int64.tonum2(x) tonum2会返回两个数,第二个数高位是右移32位的值,第一个数低位是剩下的值(&0xFF...原创 2018-11-06 16:00:06 · 1173 阅读 · 0 评论 -
tolua框架学习(十二)
文章使用的tolua框架是LuaFramework_UGUI-1.0.4.109。可以在github上下载。这里主要是讨论下使用tolua进行热更。参考的文章是罗培羽作者所写的文章(点击此处)。不过经过我的实践后,发现有很多地方是没有办法实现的,总是会有这样或者那样的问题。所以,这篇文章只是解决了其中的一部分问题,但是,使用tolua进行代码热更,还是没有实现。 按照...原创 2018-11-30 17:33:31 · 652 阅读 · 0 评论 -
ILRuntime学习(之二)
第三个例子讲解是使用委托。使用dll内部的委托是不需要做处理的,可以直接使用。但是,如果dll中使用的委托是定义在UnityEngine等unity命名空间下的,则需要做一些注册处理。 HotFix_Project工程中使用了三个定义在例子中的委托,这些委托在unity工程中是没有办法读取到的。为此,我们需要给这些委托注册适配器。对于同一个参数组合的委托,只需要...原创 2018-12-07 19:59:19 · 1279 阅读 · 0 评论 -
ILRuntime学习(之一)
最近在学习ET框架,然后被群友告知,要先学ILRuntime。行吧,谁让咱是小白呢。。。。。 ILRuntime的学习资料我是参考的github上的教程https://ourpalm.github.io/ILRuntime/public/v1/guide/index.html和上面贴出来印象笔记(点击此处)。使用的Demo也是配套的,代码上面有很多注释。这次的学习目的...原创 2018-12-05 20:19:02 · 2780 阅读 · 0 评论 -
ILRuntime学习(之三)
第三个例子讲解是继承的问题。Hotfix_Projiect工程中的类继承了TestClassBase,而该类是定义在Unity主工程中的。例子还特意做了注解:Hotfix_Projict中的类只允许继承有1个Unity主工程的类或者接口,但是可以有随便多少个热更DLL中的接口。 使用Instantiate()方法创建热更工程中的类。由于该类是子类,所以使用了重载方法...原创 2018-12-08 16:49:14 · 1791 阅读 · 0 评论 -
ILRuntime学习(之四)
第5个例子讲解是重定向,原理按照官网的说法是:当IL解译器发现需要调用某个指定CLR方法时,将实际调用重定向到另外一个方法进行挟持,再在这个方法中对ILRuntime的反射的用法进行处理。例如new方法就是不能直接用的,要进行重定向才可以。例子中举了Debug.Log这个情况,比如我们在DLL里调用Debug.Log,默认情况下是无法显示DLL内堆栈的,但是经过CLR重定向之后可以做...原创 2018-12-17 19:25:23 · 2011 阅读 · 1 评论 -
ILRuntime学习(之五)
第7个例子讲解的是使用协程。在热更工程中使用协程已经属于跨域继承的范围了(使用Couroutine时,C#编译器会自动生成一个实现了IEnumerator,IEnumerator<object>,IDisposable接口的类,)。所以需要注册适配器才可以。 第8个例子是在热更工程是使用MonoBehaviour类。同样的,我们需要注册适配器。这里实例做了...原创 2018-12-18 17:40:16 · 1469 阅读 · 0 评论 -
AssetBundle详解
学习一下AssetBundle相关的知识。 打包 关于Assetbundle相关的API,可以参考Unity的官方文档(点击这里) 。关于打包的API,官方使用的是BuildPipeline类中的BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, Buil...原创 2019-01-08 10:46:44 · 2107 阅读 · 0 评论 -
ET框架学习——UIComponent组件和UI组件
UI组件继承自Entity,接通了Awake事件,执行Awake方法。内部维护了一个GameObject和一个Dictionary<string, UI> children字典。 Awake(GameObject gameObject)方法,会清空字典,并且给GameObject赋值。 内部还有三个对字典操作的方法。Add(UI ui)方法向字典中添加元素...原创 2019-02-06 13:07:19 · 2054 阅读 · 0 评论 -
DOtween多个动画执行
多个动画同时执行dotween是个很好用的工具,作一些UI动画的适合非常方便。其OnComplete回调也是非常有用的一点。今天用dotween偶然发现了一个之前忽略过的问题,就是在用dotween作批量动画,并且带有OnComplete回调时会比较容易出错。如下代码:for (int i = 0; i < obj.Length; i++) { obj [i].rectTransform.DO原创 2018-01-17 20:36:02 · 14456 阅读 · 4 评论