108TickTimer在Unity客户端测试案例.md 2.2 KB

![[Pasted image 20220801132303.png]]

先新建一个空的,unity工程;

![[Pasted image 20220801132344.png]]

在debug相关目录,可以找到,对应生成的dll文件;

![[Pasted image 20220801132452.png]]

另外还有一个dll文件,是打印相关的;

![[Pasted image 20220801132540.png]]

直接复制粘贴到unity的Asset目录即可;

![[Pasted image 20220801132607.png]]

回到unity中,会自动编译一下,dll文件;

![[Pasted image 20220801132713.png]]

在unity脚本,先引入需要用到的命名空间,然后对打印信息的插件,进行初始化和引用;

再实例化计时器,其中的3个action委托,也指定一下,是打印信息插件的对应接口;

![[Pasted image 20220801133037.png]]

然后,在Update()函数中,添加按键判断,是添加task还是删除task;

![[Pasted image 20220801133338.png]] 再加一个,是计算平均值的;

![[Pasted image 20220801133529.png]]

因为前面的延迟参数,是设置成0,所以另外需要调用函数,去更新和调用回调;

![[Pasted image 20220801133833.png]]

unity运行项目,然后按键点击,可以看到,间隔差显示,都是正常的;

![[Pasted image 20220801134000.png]]

按下s,计算平均间隔,正常;

![[Pasted image 20220801134152.png]]

将sethandle相关,设置成false,不会放到队列中,进行操作;

![[Pasted image 20220801134303.png]]

按下对应的按键,可以发现,不是在不同的线程操作了,都只是在单一线程下,进行操作;

![[Pasted image 20220803124622.png]]

如果把延迟改成10,然后sethandle还是false,这时,就会创建一个单独的计时器,去进行计时和调用,通过时间线程,去驱动;

![[Pasted image 20220801134742.png]]

运行,可以看到,也是正常驱动的,而且线程id也是固定的,因为它是一个固定的,创建出来的一个线程;

![[Pasted image 20220801134823.png]]

这又是放到队列里,进行处理;

![[Pasted image 20220801134858.png]]

可以看到,又都是放到主线程中,进行处理;

![[Pasted image 20220801135010.png]]

总结一下,如果这个传参不为0,就会启动一个单独的线程,进行计时和驱动;