换装系统
引用
https://www.bilibili.com/video/BV1et41197Qm?from=search&seid=15209112079617855869
ui
主要使用unity原本的组件toggle,toggle group
因为一开始没有系统的学习,在观看了某b站的教学视频后发现可以用toggle这个相关的组件可以代替之前自己手写的代码,如重复点击等功能,toggle相关组件都已经在内部实现了
创建一个父对象,在里面搭建换装系统的界面
这是我自己设计的界面,上面是一个toggle group,下面是一个togglegroup,上面是选择部位的按键,用一个toggle group进行控制,然后给上面部位的ui添加toggle,可以看情况给toggle里的grahic,添加的话当你点击到这个ui的时候他就会出现你拖进的图标,选择其他ui时那个图标就会消失
然后制作换装系统下面的ui,下面的就是不同的部位的装备预览图,每个部位都有自己的panel,通过把对应的panel拖入上面ui的on value changed里,然后设置gameobject.setactive,就可以实现当点击了上面的ui时,下面对应的装备预览图的ui就会显示出来
使用unity原生的组件来实现第一效率快,第二规范,第三省去了很多调试的时间,这也充分体现了系统学习和半路出家的程序员的区别~
这个方法可以用来优化很多前面有关按键的方法代码(不用再辛辛苦苦地用transform.getchild去显示界面),提升性能和体验
UI代码
基本没有,最多添加了一个点击事件,用这个来获得点击的当前ui的名称,通过这个名称获得ui对应的装备信息
public void OnValueChange(bool isOn)
{
if (isOn)
{
Debug.Log(name);
}
}
创建脚本,然后挂载到按键上
换装逻辑
视频里的方法是在resources里添加模型的两个文件,一个是源文件,一个是去掉mesh只剩下骨骼的文件
然后通过遍历源文件里的骨骼,骨骼里的skinmesh和材质,保存在内存中(字典的储存方式),保存的方式是根据他们的名称,然后通过ui获得的名称知道用户点击的是哪个装备,然后去替换对应的字典里的骨骼,skinmesh和材质,从而实现换装的功能
换装实现
由于尚未获得模型动画,所以目前只能先设计好ui界面,等动画完成后才能开始实现换装(因为动画师也是第一次接触换装,所以有关换装的格式可能会和视频教程里的有所出入,所以不打算先开始写代码,具体情况具体分析比较好,减少无用功~)
换装代码
日后更新