unity学习笔记-架构优化

优化点击事件

当多个物体共用一个点击脚本的时候,一个一个添加button再挂上脚本,这种操作很低效,而且越到后面会越难维护
实现思路:用一个单例,在游戏开始时将脚本动态生成到对应的物体上
好处,统一维护管理。坏处,这个脚本没了就全没了~

 private void Awake()
    {
        if (name.Contains("Left"))
        {
            btn = GameObject.Find("ButtonToMission").GetComponent<Button>();
            btn.onClick.AddListener(GroupUpSystem.Instance.Test);
            btn = GameObject.Find("TurnOffGS").GetComponent<Button>();
            btn.onClick.AddListener(GroupUpSystem.Instance.TurnOffGUS);
            for (int i = 0; i < 9; i++)
            {
                btn = GameObject.Find("GroupSystem").transform.GetChild(1).GetChild(0).GetChild(0).GetChild(i).GetChild(1).GetComponent<Button>();
                btn.onClick.AddListener(GroupUpSystem.Instance.CheckIfUpdate);
            }
        }
    }

再次优化点击事件

2021.7.12更新
之前优化的是在运行的过程中去生成button的点击事件,从而减少脚本的复用性,经过一段时间的使用和看前辈的代码,我发现,还有更好的解决办法
那就是当这个脚本已经挂载到项目场景中时,如果你还要用这个脚本, 如果是在代码里使用用单例模式的那套就可以了,如果是需要点击事件的,可以直接在button的onclik里添加新的对象
在这里插入图片描述
然后把挂载了你需要的脚本的对象拖到里面去,然后就可以选这个脚本里的方法去使用了
时隔两个月,这个问题终于相对解决的像正常流程了~感谢前辈的代码 ~

优化ai接口

对api返回的数据进行了进一步的分析,给json的实体类添加了更全的对象,以对更多功能的回调数据进行处理

实现了通过mysql的数据进行判断并相应的切换不同的人物状态

手法是先将不同的人物模型贴上贴图然后直接放到场景中,命名规范以方便通过代码进行管理,根据从数据库里回调的数据和场景中的进行匹配通过setactive进行切换即可实现简单的人物切换

使用timeline功能给人物切换添加变身动画

在这里插入图片描述
低版本的好像要下代码才能有这个功能
把这个timeline放在一个空物体上
在这里插入图片描述
在这里插入图片描述
黄色的代表音频,绿色的代表物体的激活状态,青色的那个是control,这个我也不太懂具体的是干啥的,好像放啥都行,还有一个animation task,这个个人不推荐使用,特别是在放粒子特效的时候,因为本人试过添加粒子特效的物体在animation task上,在timeline里播放时没毛病的,但是在实际的调用播放的时候偶尔会出现贴图和粒子位置偏移的bug,目前还不知道是因为什么导致的,解决办法就是使用control task来控制粒子
在这里插入图片描述
将粒子物体拖入control task 后,点击在这里插入图片描述
这个右边会弹出上面的那个图,选中那个control children,然后再用代码控制播放就不会出现animation task的情况了,这个是自己摸索出来的,猜测animation task只能控制当下拖入的物体把,他里面的子物体控制不了,而control task可以,所以就能解决这个问题
我这里是实现了控制timeline播放的时候,效果为切换相机,让相机随着人物旋转一圈,同时播放变身的特效,一圈后再切回原来的相机~
简单的变身特效就完成了~
想想之前用代码去手动控制特效就觉得自己浪费了很多时间哈哈,能用timeline控制还去手动控制,不愧是我

结构优化

2021.8.30
由于数据和脚本数量不断地上升,所以对数据的管理和脚本的管理感觉还是分开来比较好一点,在看了scriptobject有关的教程后,对项目里的一些si数据进行了scriptobject化,通过在一个对象里实例化这些数据对象进行数据的调用,相对来说比较好找一点,比较如果每次都在不同的脚本里放自己的数据(服务器不是我们自己的,很多逻辑和信息需要在项目里自己写)不方便管理.如果想对某一个数据进行修改就需要找到它对应的脚本,这样相对比较费时,而且随着时间的增加忘记的概率会越来越高,如果现在花点时间吧数据都统一放在一个对象里,这样以后或者下一个对接的人看到就能比较方便的管理数据

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值