由于兴趣爱好,工作之余会尝试做做RPG游戏,遇到角色换装这个功能没什么思路,于是在网上苦苦找寻相关资料,网上角色换装文章还是有一些,不过大多讲的比较简单,最后没办法不得不拿官方的角色换装代码来研究,开始看到一头雾水,不过慢慢找到看这个Demo代码的思路,终于理清了换装的思路。
其实,可以从角色换装资源打包代码看起,然后看换装代码。
以下是我看代码的思路:CreateAssetbundles.cs -> Main.cs
换装的核心代码如下:
(1)打包代码 CreateAssetbundles.cs
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
class CreateAssetbundles
{
// This method creates an assetbundle of each SkinnedMeshRenderer
// found in any selected character fbx, and adds any materials that
// are intended to be used by the specific SkinnedMeshRenderer.
[MenuItem("Character Generator/Create Assetbundles")]
static void Execute()
{
bool createdBundle = false;
foreach (Object o in Selection.GetFiltered(typeof (Object), SelectionMode.DeepAssets))
{
if (!(o is GameObject)) continue;
if (o.name.Contains("@")) continue;
if (!AssetDatabase.GetAssetPath(o).Contains("/characters/")) continue;
GameObject characterFBX = (GameObject)o;
string name = characterFBX.name.ToLower();
Debug.Log("******* Creating assetbundles for: " + name + " *******");
// Create a directory to store the generated assetbundles.
if (!Directory.Exists(AssetbundlePath))
Directory.CreateDirectory(AssetbundlePath);
// Delete existing assetbundles for current character.
string[] existingAssetbundles = Directory.GetFiles(AssetbundlePath);
foreach (string bundle in existingAssetbundles)