[Unity3D]人物模型的换装

简介: 写一写今天的学习心得,保持每天不断的学习,今天写的是人物的换装的技术实现。 人物的换装是游戏开发的一个基本的技术,初来公司,老板就要我学习一下人物换装,也当是给我练练手吧,然后我接到一个需求之后,就要开始学习和搜集资料来实现这一功能,一下是学习心得,接下来我们就一起来学习一下,仅仅供新手参考。

写一写今天的学习心得,保持每天不断的学习,今天写的是人物的换装的技术实现。

人物的换装是游戏开发的一个基本的技术,初来公司,老板就要我学习一下人物换装,也当是给我练练手吧,然后我接到一个需求之后,就要开始学习和搜集资料来实现这一功能,一下是学习心得,接下来我们就一起来学习一下,仅仅供新手参考。

首先 我们将从美工那儿获取到的人物模型资源加载到本地,然后通过写代码挂载到人物模型上面。以下是挂在在模型上面的js代码,也就是换装的脚本:

var ME1 : Mesh;    //网格
var MA1 : Material;   //材质
private var TK = 0;   
var ME2 : Mesh;  
var MA2 : Material;   
private var WQ = 0;   
var ME3 : Mesh;  
var MA3 : Material;   
private var ZJ = 0;   
var ME4 : Mesh;  
var MA4 : Material;   
private var YJ = 0;   
  
function OnGUI()  
{  
    GUILayout.Label("");  
    if(GUILayout.Button ("Helm头盔"))   
    {  
        if(TK == 1)  
        {  
            transform.Find("group2").Find("Object02").GetComponent(MeshFilter).mesh = null;  
            transform.Find("group2").Find("Object02").renderer.material = null;  
            TK = 0;  
        }  
        else  
        {  
            transform.Find("group2").Find("Object02").GetComponent(MeshFilter).mesh = ME1;  
            transform.Find("group2").Find("Object02").renderer.material = MA1;  
            TK = 1;  
        }  
    }  
    if(GUILayout.Button ("Weapon武器"))   
    {  
        if(WQ == 1)  
        {  
            transform.Find("group2").Find("polySurface1").GetComponent(MeshFilter).mesh = null;  
            transform.Find("group2").Find("polySurface1").renderer.material = null;  
            WQ = 0;  
        }  
        else  
        {  
            transform.Find("group2").Find("polySurface1").GetComponent(MeshFilter).mesh = ME2;  
            transform.Find("group2").Find("polySurface1").renderer.material = MA2;  
            WQ = 1;  
        }  
    }  
    if(GUILayout.Button ("LCollar左肩"))  
    {  
        if(ZJ == 1)  
        {  
            transform.Find("group2").Find("polySurface3").GetComponent(MeshFilter).mesh = null;  
            transform.Find("group2").Find("polySurface3").renderer.material = null;  
            ZJ = 0;  
        }  
        else  
        {  
            transform.Find("group2").Find("polySurface3").GetComponent(MeshFilter).mesh = ME3;  
            transform.Find("group2").Find("polySurface3").renderer.material = MA3;  
            ZJ = 1;  
        }  
    }  
    if(GUILayout.Button ("RCollar右肩"))  
    {  
        if(YJ == 1)  
        {  
            transform.Find("group2").Find("polySurface4").GetComponent(MeshFilter).mesh = null;  
            transform.Find("group2").Find("polySurface4").renderer.material = null;  
            YJ = 0;  
        }  
        else  
        {  
            transform.Find("group2").Find("polySurface4").GetComponent(MeshFilter).mesh = ME4;  
            transform.Find("group2").Find("polySurface4").renderer.material = MA4;  
            YJ = 1;  
        }  
    }  
}  
这里要换装主要是游戏里面的Mesh和Materials,可以我们从属性菜单中直接给这个赋值,可行方便的一个策略是将所有的模型资源写在一个数组中,然后通过数组的索引获取到对应的贴图就OK了。

帧数值的js代码,这段是挂在在摄像机上的:

var updateInterval = 0.5;
private var lastInterval : double; // Last interval end time
private var frames = 0; // Frames over current interval
private var fps : float; // Current FPS
private var sum = 0.0;
private var num = 0.0;

function Start() 
{
	lastInterval = Time.realtimeSinceStartup;
	frames = 0;
}

function OnGUI () 
{
	GUILayout.Label("fps:" + fps.ToString("f0") + "      " + (sum/num).ToString("f0"));
}

function Update() 
{
	transform.RotateAround (Vector3.zero, Vector3.up, 100 * Time.deltaTime);
	++frames;
	var timeNow = Time.realtimeSinceStartup;
	if( timeNow > lastInterval + updateInterval )
	{
		fps = frames / (timeNow - lastInterval);
		frames = 0;
		lastInterval = timeNow;
		sum += fps;
		num++;
	}
}


程序截图:


转眼之间都快到凌晨一点半了,还是可以洗洗睡了!

转载请保留原链接:http://write.blog.csdn.net/postedit/14093409 谢谢!

附加:群号858550,里面有近2000号Unity的同胞们也有一些大牛们,欢迎进入进行技术交流或者学习!

源码下载:http://download.csdn.net/detail/s10141303/6494229

安卓下载:http://download.csdn.net/detail/s10141303/6507163

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013              MyQQ:1213250243

MyTel:13262983383 

====================== 相互学习,共同进步 ===================


相关文章
|
8月前
|
人工智能 自然语言处理 数据可视化
比Sora更王炸,LTX Studio文本生成超25秒,视频自带背景音乐、转场等效果!
【2月更文挑战第13天】比Sora更王炸,LTX Studio文本生成超25秒,视频自带背景音乐、转场等效果!
156 3
比Sora更王炸,LTX Studio文本生成超25秒,视频自带背景音乐、转场等效果!
|
人工智能 Linux 开发工具
真人AI写真的制作方法-文生图换脸
AI写真最近火起来了,特别是某款现象级相机的出现,只需要上传自己的照片,就能生成漂亮的写真照,这一产品再次带火了AI绘画。今天我就来分享一个使用Stable Diffusion WebUI制作真人AI写真的方法,不用训练,快速出图。
860 1
|
3月前
Midjourney-03 收集Prompt 动漫风格 樱花 武士 魔法少女 自然 机甲 拟人动物 歌剧场景 星际飞船 神秘森林 精灵 详细记录 超多图片 多种风格 附带文本 关键词
Midjourney-03 收集Prompt 动漫风格 樱花 武士 魔法少女 自然 机甲 拟人动物 歌剧场景 星际飞船 神秘森林 精灵 详细记录 超多图片 多种风格 附带文本 关键词
55 0
|
7月前
|
图形学
【unity小技巧】Unity人物衣服布料系统的探究 —— Cloth组件
【unity小技巧】Unity人物衣服布料系统的探究 —— Cloth组件
257 0
|
8月前
动漫人物和泉纱雾404源码
动漫人物和泉纱雾404源码
84 2
动漫人物和泉纱雾404源码
|
人工智能
StyleGAN 调整面部表情,让虚拟人脸更生动
赋予 AI 人脸表情,让其更生动自然
401 3
StyleGAN 调整面部表情,让虚拟人脸更生动
|
iOS开发 MacOS Windows
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
698 0
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
|
图形学
Unity 导入原神人物模型
Unity 导入原神人物模型
4433 2
Unity 导入原神人物模型
|
图形学
3D游戏建模必备技巧一人物模型贴图布线!(99%小白收藏)
今天跟大家好好聊一聊怎么贴图、布线。 首先, 你得看看你自己在做的人物模型 是游戏人物角色还是影视人物角色, 虽然都是人物模型, 但两者在贴图、 布线的方法上还是有一些差别的。
325 0
3D游戏建模必备技巧一人物模型贴图布线!(99%小白收藏)
|
编解码 定位技术 图形学
Maya风格化模型制作教程
风格化的模型制作起来比较困难,需要多个软件配合制作。下面艺术家CloéMolinari分享使用在Maya,Substance Painter和MT4创建一个风格化立体模型的过程,并介绍在SP和Marmoset中工作的重要性。
388 0
Maya风格化模型制作教程

热门文章

最新文章