Unity实现换装系统

作者:无忧酒不加糖 时间:2021-08-11 15:27:15 

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

1.创建Sprite Library Asset

Unity实现换装系统

2.添加新目录

Unity实现换装系统

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

Unity实现换装系统

3.添加组件

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

Unity实现换装系统

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

Unity实现换装系统

4.通过代码实现换装

小笔记:

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


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.U2D.Animation;

public class RifleSpriteControl : MonoBehaviour
{
   public List<SpriteResolver> spriteResolvers = new List<SpriteResolver>();
   // Start is called before the first frame update
   void Start()
   {
       foreach(var resolver in FindObjectsOfType<SpriteResolver>())
       {
        //将遍历到的所有SpriteResolver添加到list中
           spriteResolvers.Add(resolver);
       }
   }

// Update is called once per frame
   void Update()
   {
       if (Input.GetKeyDown(KeyCode.E))//按E切换到AK47
       {
           foreach (var resolver in this.GetComponents<SpriteResolver>())
           {
            //SetCategoryAndLabel(目录名,步骤2中所填写的Label),以获取相应的图片
               resolver.SetCategoryAndLabel(resolver.GetCategory(), "AK47");
           }
       }
       if (Input.GetKeyDown(KeyCode.R))//按R切换到MP5
       {
           foreach (var resolver in this.GetComponents<SpriteResolver>())
           {
               resolver.SetCategoryAndLabel(resolver.GetCategory(), "MP5");
           }
       }
   }
}

来源:https://blog.csdn.net/weixin_48426544/article/details/115583551

标签:unity,换装系统
0
投稿

猜你喜欢

  • Java多线程状态及方法实例解析

    2021-09-10 22:49:53
  • java判断字符串是否为数字的方法小结

    2023-11-25 05:54:52
  • java中transient关键字用法分析

    2022-01-22 04:27:05
  • SpringBoot v2.2以上重复读取Request Body内容的解决方案

    2022-06-27 11:00:16
  • SpringCloud断路器Hystrix原理及用法解析

    2022-03-20 16:47:41
  • SpringMVC bean加载控制的实现分析

    2023-08-08 18:46:19
  • 如何修改FeginCilent定义的服务名到指定服务

    2022-07-05 05:49:05
  • Spring mvc Json处理实现流程代码实例

    2023-07-14 21:31:06
  • 关于springboot集成swagger及knife4j的增强问题

    2023-11-29 00:43:50
  • Java基础之容器Vector详解

    2023-11-25 13:10:07
  • 超详细的Spring Boot入门笔记(总结)

    2022-10-26 18:44:21
  • Java数据结构之链表的增删查改详解

    2023-08-13 07:48:40
  • 一文带你彻底理解Java序列化和反序列化

    2021-12-23 05:24:12
  • java使用Hashtable过滤数组中重复值的方法

    2023-10-22 06:24:08
  • 获取JsonObject某一未知key的值操作

    2023-02-10 15:09:45
  • SpringBoot配置SSL同时支持http和https访问实现

    2023-04-25 19:42:45
  • SpringBoot实现WebSocket即时通讯的示例代码

    2022-06-14 19:59:36
  • spring cloud zuul修改请求url的方法

    2022-09-03 01:44:19
  • Java定时器问题实例解析

    2021-08-21 21:02:53
  • 深入分析java并发编程中volatile的实现原理

    2023-11-23 05:02:25
  • asp之家 软件编程 m.aspxhome.com