制作一个承载想法的东西(三)——一些管理类和工具类

  • A+
所属分类:Unity3d 原创文章

首先来看一下,一些常用的管理类方法写成了一个简单的方法,方便调用,从这里出发就可以看到出现了两个管理类了,一个是EventManager管理类,负责的是减少脚本文件之间的相互引用也能相互传递信息。还有一个就是TriggerManager管理类,这个是负责一些Unity事件的触发和注册,比如点击、滑动等等。

 

先来看看EventManager吧,在需要接受其他类传递的信息时就可以注册一个事件,在别的类触发这个事件就可以了,比较简单就不多说了,直接看代码吧

 

再来看看TriggerManager吧,说到这个就要将Unity那边的工具类EventTriggerListener了还有lua这边的工具类UtilityManager了,说起来好乱了,稍微整理一下流程吧。首先在场景中已经可以获取到UI的物体了,但是还不知道怎么触发点击等交互事件,此时Unity那边就需要一个监听这些事件了,那这个工具脚本EventTriggerListener就诞生了,对应的lua这边就需要TriggerManager就负责把那个c#脚本挂载到物体上,并记录打开事件开关,完成事件的监听了。好了,此时EventTriggerListener就可以触发相应的事件方法了,那么需要把事件的调用转移到lua虚拟机这边来,所以需要提供一个lua方法给c#那边,没错,那就是callTrigger方法了,他是通过工具类UtilityManager初始化方法中传递过去了。

 

EventTriggerListener在事件触发的时候会调用Main里面的InvokeEventCall,传递触发的物体和事件类型及触发参数过去。

 

InvokeEventCall调用的是通过RegisterEventCall传递过来的lua方法,这里还有一个方法是将byte数据保存为文件的,这里直接提及了。

 

可以看到注册到那边的lua方法就是callTrigger方法了,它实际调用的就是TriggerManager里面的方法了。同样的这里也提供了调用c#Main保存byte数据的方法。

 

这个管理器干活最多的了,其他的也只是传递传递信息而已,这里在注册事件的时候会为注册事件的物体添加EventTriggerListerer组件,并打开事件开关,同时保存了事件的回调方法,在事件触发的时候,通过传回来的物体和事件类型辨别找到相应的回调并调用

 

好了,写完了,有点乱,其实确实是很容易的东西,这里只是展示说明一下,后面的文章遇到这些也不好说这些东西,直接这里看看,后面遇到就不懵逼了。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: