Пример #1
0
    private void makeTAXE()
    {
        //光腿//
        string              partModelName    = "taxe001";
        CharacterElement    partModelElement = sortedElements[currentCharacter][partModelName];
        GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
        SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();

        smr.updateWhenOffscreen = true;

        StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));

        List <Transform> bones = new List <Transform>();

        bones.Clear();
        foreach (string boneName in stringHolder.content)
        {
            foreach (Transform hip in hips)
            {
                if (hip.name != boneName)
                {
                    continue;
                }
                bones.Add(hip);
                break;
            }
        }

        // 更新指定部位 GameObject 的 SkinnedMeshRenderer 内容//
        targetSmr["TAXE"].sharedMesh = smr.sharedMesh;
        targetSmr["TAXE"].quality    = SkinQuality.Bone4;
        targetSmr["TAXE"].bones      = bones.ToArray();
        targetSmr["TAXE"].materials  = smr.materials;

        if (mSockTextureName != "")
        {
            ChangePartTexture(8, mSockTextureName);
        }

        for (int i = 0; i < targetSmr["TAXE"].materials.Length; i++)
        {
            string testShadername = targetSmr["TAXE"].materials[i].shader.name;
            targetSmr["TAXE"].materials[i].shader = Shader.Find(testShadername);
        }
    }
Пример #2
0
    public IEnumerator ChangePart(string part, string item, int partID, bool changePart, string outTexture1 = "", string outTexture2 = "")
    {
        if (partID == 6 || partID == 7 || partID == 8)
        {
            string textureName = part + item;
            StartCoroutine(ChangePartTexture(partID, textureName));
            switch (partID)
            {
            case 6:

                break;

            case 7:
                makeTAXE();
                break;

            case 8:
                break;
            }
        }
        else
        {
            string partModelName = part + item;
            if (partModelName != "" && partModelName != "0")
            {
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];
                yield return(partModelElement.CreateWWWBundle(AssetbundleBaseURL, GameDefines.AssetBundleVersion));

                GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
                SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();
                smr.updateWhenOffscreen = true;

                StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));
                ChangePartSynchronous(smr, part, item, partID, changePart, stringHolder.content, outTexture1, outTexture2);

                //GameObject.DestroyObject(go);
            }
        }
    }
Пример #3
0
    public IEnumerator  generageCharacterFormGirlDataSynchronous(GirlData girlData)
    {
        currentCharacter = "a001";

        if (mCharacterConfig == null)
        {
            mCharacterConfig = Globals.Instance.MDataTableManager.GetConfig <CharacterConfig>();
        }
//		mCharacterConfig.GetCharacterObject(girlData.BasicData.LogicID,out mCharacterObj);

        if (!characterBaseWWWs.ContainsKey(currentCharacter))
        {
            var www = WWW.LoadFromCacheOrDownload(AssetbundleBaseURL + currentCharacter + "_characterbase.assetbundle", GameDefines.AssetBundleVersion);
            characterBaseWWWs.Add(currentCharacter, www);
            yield return(characterBaseWWWs[currentCharacter]);
        }


        if (!characterBaseRequests.ContainsKey(currentCharacter))
        {
            //AssetBundleRequest requestCBase = ;
            characterBaseRequests.Add(currentCharacter, CurrentCharacterBase.assetBundle.LoadAssetAsync("characterbase", typeof(GameObject)));
            yield return(characterBaseRequests[currentCharacter]);
        }


        if (hips == null || hips.Length == 0)
        {
            GameObject root = (GameObject)Object.Instantiate(characterBaseRequests[currentCharacter].asset);
            animator              = root.GetComponent <Animator>();
            root.name             = currentCharacter;
            root.transform.parent = target;

            for (int i = 0; i < PartListLength; i++)
            {
                GameObject partObj = new GameObject();
                partObj.name             = InnerPartList[i];
                partObj.transform.parent = root.transform;
                //为新建立的 GameObject 加入 SkinnedMeshRenderer,并将此 SkinnedMeshRenderer 存入 targetSmr
                targetSmr.Add(InnerPartList[i], partObj.AddComponent <SkinnedMeshRenderer>());
            }

            //从目标物件取得骨架资料 (Female_Hips 的全部物件)
            hips = root.GetComponentsInChildren <Transform>();

            root.transform.localPosition    = Vector3.zero;
            root.transform.localEulerAngles = Vector3.zero;
        }


        ///2-13 衣服//
        for (int i = mInedxIter; i < 19; i++)
        {
            Debug.Log("i is : " + mInedxIter.ToString());
            ///内衣内裤袜子///
            if (i == 5 || i == 6 || i == 7)
            {
                string textureName = mCharacterObj.PartInfoList[i].partModelName;
                switch (mCharacterObj.PartInfoList[i].partID)
                {
                case 6:
                    mBaraTextureName = textureName;
                    break;

                case 7:
                    mUnderTextureName = textureName;
                    break;

                case 8:
                    mSockTextureName = textureName;
                    break;
                }
                continue;
            }

            ItemSlotData itemSlotData = null;
            girlData.ClothDatas.TryGetValue(mCharacterObj.PartInfoList[i].partID, out itemSlotData);
            if (itemSlotData != null)
            {
                if (mItemConfig == null)
                {
                    mItemConfig = Globals.Instance.MDataTableManager.GetConfig <ItemConfig> ();
                }

                ItemConfig.ItemElement element = null;
                bool IsHas = mItemConfig.GetItemElement(itemSlotData.MItemData.BasicData.LogicID, out element);
                if (!IsHas)
                {
                    yield return(false);
                }
                string partModelName = element.ModelName;

                if (partModelName != "" && partModelName != "0")
                {
                    partModelName = partModelName.ToLower();
                    CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];
                    yield return(partModelElement.CreateWWWBundle(AssetbundleBaseURL, GameDefines.AssetBundleVersion));
                }
            }
            else
            {
                string partModelName = mCharacterObj.PartInfoList[i].partModelName;
                if (partModelName != "" && partModelName != "0")
                {
                    partModelName = partModelName.ToLower();
                    CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];
                    yield return(partModelElement.CreateWWWBundle(AssetbundleBaseURL, GameDefines.AssetBundleVersion));
                }
            }
        }

        ///20-25 肉体 ////
        for (int i = 13; i < 19; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            if (partModelName != "" && partModelName != "0")
            {
                string partName  = partModelName.Substring(0, partModelName.Length - 3);
                string partIDStr = partModelName.Substring(partModelName.Length - 3, 3);
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];


                GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
                SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();
                smr.updateWhenOffscreen = true;

                StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));

                ChangePartSynchronous(smr, partName, partIDStr, mCharacterObj.PartInfoList[i].partID, false, stringHolder.content);
            }
        }
        ///1-13 头发和衣服//
        for (int i = 0; i < 13; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            ///内衣内裤袜子///
            if (i == 5 || i == 6 || i == 7)
            {
                continue;
            }
            if (partModelName != "" && partModelName != "0")
            {
                string partName  = partModelName.Substring(0, partModelName.Length - 3);
                string partIDStr = partModelName.Substring(partModelName.Length - 3, 3);
                ItemConfig.ItemElement element = null;
                bool   IsHas           = mItemConfig.GetItemElement(mCharacterObj.PartInfoList[i].ItemID, out element);
                string outTextureName0 = "";
                string outTextureName1 = "";
                if (IsHas)
                {
                    outTextureName0 = element.OutTextureName0;
                    outTextureName1 = element.OutTextureName1;
                }
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];


                GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
                SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();
                smr.updateWhenOffscreen = true;

                StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));

                ChangePartSynchronous(smr, partName, partIDStr, mCharacterObj.PartInfoList[i].partID, false, stringHolder.content, outTextureName0, outTextureName1);
            }
        }

        for (int i = 5; i < 8; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            ChangePartTexture(mCharacterObj.PartInfoList[i].partID, partModelName);
        }


        yield break;
    }
Пример #4
0
    public IEnumerator  generateCharacterFromConfigSynchronous(int characterId, string animationName)
    {
        currentCharacter = "a001";

        if (!characterBaseWWWs.ContainsKey(currentCharacter))
        {
            var www = WWW.LoadFromCacheOrDownload(AssetbundleBaseURL + currentCharacter + "_characterbase.assetbundle", GameDefines.AssetBundleVersion);
            characterBaseWWWs.Add(currentCharacter, www);
            yield return(characterBaseWWWs[currentCharacter]);
        }


        if (!characterBaseRequests.ContainsKey(currentCharacter))
        {
            //AssetBundleRequest requestCBase = ;
            characterBaseRequests.Add(currentCharacter, CurrentCharacterBase.assetBundle.LoadAssetAsync("characterbase", typeof(GameObject)));
            //if (!characterBaseRequests[currentCharacter].isDone)
            //	return false;
            yield return(characterBaseRequests[currentCharacter]);
        }


        if (hips == null || hips.Length == 0)
        {
            GameObject root = (GameObject)Object.Instantiate(characterBaseRequests[currentCharacter].asset);
            animator              = root.GetComponent <Animator>();
            root.name             = currentCharacter;
            root.transform.parent = target;

            for (int i = 0; i < PartListLength; i++)
            {
                GameObject partObj = new GameObject();
                partObj.name             = InnerPartList[i];
                partObj.transform.parent = root.transform;
                //为新建立的 GameObject 加入 SkinnedMeshRenderer,并将此 SkinnedMeshRenderer 存入 targetSmr
                targetSmr.Add(InnerPartList[i], partObj.AddComponent <SkinnedMeshRenderer>());
            }

            //从目标物件取得骨架资料 (Female_Hips 的全部物件)
            hips = root.GetComponentsInChildren <Transform>();

            root.transform.localPosition = Vector3.zero;
        }

        if (mCharacterConfig == null)
        {
            mCharacterConfig = Globals.Instance.MDataTableManager.GetConfig <CharacterConfig>();
        }

        mCharacterConfig.GetCharacterObject(characterId, out mCharacterObj);

        if (mItemConfig == null)
        {
            mItemConfig = Globals.Instance.MDataTableManager.GetConfig <ItemConfig>();
        }
        ItemConfig.ItemElement element = null;

        for (int i = 0; i < 19; i++)
        {
            ///内衣内裤袜子///
            if (i == 5 || i == 6 || i == 7)
            {
                continue;
            }
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            if (partModelName != "" && partModelName != "0")
            {
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];

                //if(!partModelElement.WWWBundle.isDone)
                //return false;
                yield return(partModelElement.CreateWWWBundle(AssetbundleBaseURL, GameDefines.AssetBundleVersion));
            }
        }

        ///20-25 肉体 ////
        for (int i = 13; i < 19; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            if (partModelName != "" && partModelName != "0")
            {
                string partName  = partModelName.Substring(0, partModelName.Length - 3);
                string partIDStr = partModelName.Substring(partModelName.Length - 3, 3);
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];


                GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
                SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();
                smr.updateWhenOffscreen = true;

                StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));

                ChangePartSynchronous(smr, partName, partIDStr, mCharacterObj.PartInfoList[i].partID, false, stringHolder.content);
            }
        }
        ///1-13 头发和衣服//
        for (int i = 0; i < 13; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            ///内衣内裤袜子///
            if (i == 5 || i == 6 || i == 7)
            {
                continue;
            }
            if (partModelName != "" && partModelName != "0")
            {
                string partName  = partModelName.Substring(0, partModelName.Length - 3);
                string partIDStr = partModelName.Substring(partModelName.Length - 3, 3);

                bool   IsHas           = mItemConfig.GetItemElement(mCharacterObj.PartInfoList[i].ItemID, out element);
                string outTextureName0 = "";
                string outTextureName1 = "";
                if (IsHas)
                {
                    outTextureName0 = element.OutTextureName0;
                    outTextureName1 = element.OutTextureName1;
                }
                partModelName = partModelName.ToLower();
                CharacterElement partModelElement = sortedElements[currentCharacter][partModelName];


                GameObject          go  = (GameObject)partModelElement.GetWWWBundle().assetBundle.LoadAsset("rendererobject", typeof(GameObject));
                SkinnedMeshRenderer smr = (SkinnedMeshRenderer)go.GetComponent <Renderer>();
                smr.updateWhenOffscreen = true;

                StringHolder stringHolder = (StringHolder)partModelElement.GetWWWBundle().assetBundle.LoadAsset("bonenames", typeof(StringHolder));

                ChangePartSynchronous(smr, partName, partIDStr, mCharacterObj.PartInfoList[i].partID, false, stringHolder.content, outTextureName0, outTextureName1);
            }
        }

        for (int i = 5; i < 8; i++)
        {
            string partModelName = mCharacterObj.PartInfoList[i].partModelName;
            if (partModelName != "")
            {
                ChangePartTexture(mCharacterObj.PartInfoList[i].partID, partModelName);
            }
        }



        mCharacterConfigId = characterId;

        yield return(true);
    }