Unity之角色换装

Unity之角色换装,关于换装的方法有很多种,在此将我自己写的一个小方法给大家分享一下


首先我的角色模型如下,左边为一个没有贴图的Cube,右边为我的模型,带贴图(服装)



第一:看下我的模型的服装贴图是在那个地方给搞上去的,在Hierarchy面板上点击我的模型,在它的子物体上查找带有 Skinned Mesh Renderer组件的物体,下面查找到model_dibing_1_2的子节点上绑定有Skinned Mesh Renderer组件,如下所示



第二:我们的贴图材质是就是在Skinned Mesh Renderer组件下的,“Materials” 属性下设置的,如下

从下面的图上可以看到Materials数组只有一项, "tex_dibing_1_2"即是我们的模型贴图的材质,然后我们找到 "tex_dibing_1_2"材质球,然后查看他的贴图图片(第四部)。



第四:材质贴图如下所示



可以看到Resources文件夹下的tex_dibing_1_2.tif文件即是材质球的贴图,我们通过更换材质球的贴图即可实现不同服装的效果,操作如下

第五:更换材质贴图后的模型如下





通过上面的操作我们知道了,直接改变模型材质的贴图即可实现不同服装的效果,那么在项目中我们通过代码控制替换材质贴图即可实现角色换装的目的。

第六:创建 Test 脚本,代码如下

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    public GameObject CubeObj;
    public Transform obj;
    SkinnedMeshRenderer skinnedMeshRenderer;
    public Texture text;

    private string texture1 = "tex_dibing_1_1";
    private string texture2 = "tex_dibing_1_2";
    private string texture3 = "tex_dibing_1_3";
    private string texture4 = "tex_dibing_1_4";

	// Use this for initialization
	void Start () {
        //获取挂载材质球的节点
        obj = transform.Find("model_dibing_1_2");
        //获取节点上的SkinnedMeshRenderer 组件
        skinnedMeshRenderer = obj.GetComponent<SkinnedMeshRenderer>();
	}
	
	// Update is called once per frame
	void Update () {
        //通过 A D W S 按键实现换装效果
        if (Input.GetKeyDown(KeyCode.A))
        {
            Controller(texture1);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            Controller(texture2);
        }
        if (Input.GetKeyDown(KeyCode.W))
        {
            Controller(texture3);
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            Controller(texture4);
        }
	}

    void Controller(string str)
    {
        //获取骨骼蒙皮的材质数组
        Material[] materials = skinnedMeshRenderer.materials;
        //从Resources文件夹下加载贴图图片
        text = Resources.Load(str) as Texture;
        //替换模型材质贴图
        skinnedMeshRenderer.materials[0].mainTexture = text;
        //给Cube设置材质贴图,作为对比
        CubeObj.transform.renderer.material.mainTexture = materials[0].mainTexture;
    }

}


将Test脚本挂在 角色模型上,运行 如下










































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值