服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity实现换装系统

Unity实现换装系统

2022-11-11 14:12无忧酒不加糖 C#

这篇文章主要为大家详细介绍了Unity实现换装系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

延伸 · 阅读

精彩推荐
  • C#Unity实现UI渐变效果

    Unity实现UI渐变效果

    这篇文章主要为大家详细介绍了Unity实现UI渐变效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    即步6592022-09-01
  • C#C#中实现线程同步lock关键字的用法详解

    C#中实现线程同步lock关键字的用法详解

    实现线程同步的第一种方式是我们经常使用的lock关键字,它将包围的语句块标记为临界区,这样一次只有一个线程进入临界区并执行代码,接下来通过本文...

    ruozeng6192021-11-30
  • C#C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨论

    C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨

    在本篇文章里小编给大家整理的是关于C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨论,有需要的朋友们学习下。...

    rainbow706264662022-08-09
  • C#Unity3D UGUI实现缩放循环拖动卡牌展示效果

    Unity3D UGUI实现缩放循环拖动卡牌展示效果

    这篇文章主要为大家详细介绍了Unity3D UGUI实现缩放循环拖动展示卡牌效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参...

    诗远3702022-03-11
  • C#使用C#实现写入系统日志

    使用C#实现写入系统日志

    本文给大家分享的是作者使用使用C#实现将软件日志写入系统日志中的方法,十分巧妙,有需要的小伙伴可以参考下...

    林德熙10462022-02-19
  • C#Unity幸运转盘实战项目

    Unity幸运转盘实战项目

    这篇文章主要为大家详细介绍了Unity幸运转盘实战项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    CC_childe6372022-07-20
  • C#C# 泛型集合的自定义类型排序的实现

    C# 泛型集合的自定义类型排序的实现

    这篇文章主要介绍了C# 泛型集合的自定义类型排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    Tulip12310732022-10-17
  • C#C#实现TreeView节点拖拽的方法

    C#实现TreeView节点拖拽的方法

    这篇文章主要介绍了C#实现TreeView节点拖拽的方法,涉及C#针对TreeView节点的动态添加及移除技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    99re12582021-10-26