经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity实现换装系统
来源:jb51  时间:2021/4/12 9:34:28  对本文有异议

Unity如何实现换装系统,供大家参考,具体内容如下

1.创建Sprite Library Asset

2.添加新目录

Label 可以理解为标签,在代码调用过程中使用,将该部位装备图片拖入Sprite中

3.添加组件

给需要换装的部位添加Sprite Resolver组件(如头部换装,就在头部对象挂载组件)

选择目录名,就会出现之前Library Asset中拖拽的图片内容,点击不同图片可以预览效果(如果出现装备位置偏移,需调整图片的pivot)

4.通过代码实现换装

小笔记:

1).UnityEngine.Experimental.U2D.Animation 记得写
2).Start函数中GetComponents的s不要忘,也可以用FindObjectsOfType
3).如果是整体换套装,就将脚本挂载到Player对象上,如果只是单独换部件如武器,就单独挂载到武器对象上

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Experimental.U2D.Animation;
  5.  
  6. public class RifleSpriteControl : MonoBehaviour
  7. {
  8. public List<SpriteResolver> spriteResolvers = new List<SpriteResolver>();
  9. // Start is called before the first frame update
  10. void Start()
  11. {
  12. foreach(var resolver in FindObjectsOfType<SpriteResolver>())
  13. {
  14. //将遍历到的所有SpriteResolver添加到list中
  15. spriteResolvers.Add(resolver);
  16. }
  17. }
  18.  
  19. // Update is called once per frame
  20. void Update()
  21. {
  22. if (Input.GetKeyDown(KeyCode.E))//按E切换到AK47
  23. {
  24. foreach (var resolver in this.GetComponents<SpriteResolver>())
  25. {
  26. //SetCategoryAndLabel(目录名,步骤2中所填写的Label),以获取相应的图片
  27. resolver.SetCategoryAndLabel(resolver.GetCategory(), "AK47");
  28. }
  29. }
  30. if (Input.GetKeyDown(KeyCode.R))//按R切换到MP5
  31. {
  32. foreach (var resolver in this.GetComponents<SpriteResolver>())
  33. {
  34. resolver.SetCategoryAndLabel(resolver.GetCategory(), "MP5");
  35. }
  36. }
  37. }
  38. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号