예제 #1
0
    private GameObject BuildHighLvGemObj(int level, GemMeshType meshType, GemDecalType decalType, int colID)
    {
        GameObject gem;

        if (cfg.isColDependParticle)
        {
            gem = GameObject.Instantiate(cfg.PrefabInstances_Particle[(level - 3) * 5 + colID + 2]);
        }
        else
        {
            gem = GameObject.Instantiate(cfg.PrefabInstances[level - 1]);
        }
        string DecalType = decalType == GemDecalType.NULL? "_NoDecal" : "_Decal" + (int)decalType;

        gem.name = "Gem_Lv" + level + "_" + meshType.ToString() + "_" + colID + DecalType;
        GemStone stone = gem.transform.GetChild(0).FindChild("GemObj").gameObject.AddComponent <GemStone>();

        stone.meshType = meshType;
        stone.GetComponent <MeshFilter>().mesh = cfg.GemMeshes[(int)meshType];
        stone.level = level;
        if (stone.Material == null)
        {
            //Material tempM = DrawMaterialList(_stone.material, cfg.GetTempMaterialList());
            Material tempM = cfg.ChooseTheMat(stone.level, stone.meshType);
            AssetDatabase.CreateAsset(tempM, cfg.materialsPath + "/Mat_Lv" + level + "_" + meshType.ToString() + "_" + colID + DecalType + ".mat");
            stone.Material = tempM;
            stone.Material = AssetField <Material>("Material", stone.Material);
            generatedMats.Add(cfg.materialsPath + "/Mat_Lv" + level + "_" + meshType.ToString() + "_" + colID + DecalType + ".mat");
        }
        if (stone.meshType == GemMeshType.Oval || stone.meshType == GemMeshType.Sphere)
        {
            stone.GemColor  = cfg.Colors[colID];
            stone.decalType = decalType;
            if (decalType != GemDecalType.NULL)
            {
                stone.DecalColor = cfg.DecalColors[colID];
                stone.DecalTex   = cfg.AdditiveTexs[(int)decalType];
                stone.BumpMap    = cfg.AdditiveNormalTexs[(int)decalType];
            }
            else
            {
                stone.DecalColor = new Color(0, 0, 0, 0);
            }
            stone.MainTex = cfg.BaseTexs[(level - 1) * 5 + colID];
        }
        gem.transform.SetParent(GemsManager.transform);

        //计算位置:
        gem.transform.localPosition = GetTheGemPos(level - 1, meshType, decalType, colID);
        gemMatID++;
        return(gem);
    }
예제 #2
0
    private Vector3 GetTheGemPos(int level, GemMeshType meshType, GemDecalType decalType, int colID)
    {
        //分成5(等级)*6(形状)个Tile
        Vector3 startPos = new Vector3(
            (int)meshType * cfg.tilespace.x,
            -level * cfg.tilespace.y, 0);
        //每个Tile分成5(符文种类颜色)*5(颜色)个Cell
        float yoffset = 0;

        if (decalType == GemDecalType.NULL)
        {
            yoffset = 2 * cfg.cellspace.y;
        }
        else
        {
            yoffset = (int)decalType * cfg.cellspace.y;
        }
        Vector3 offset = new Vector3(
            colID * cfg.cellspace.x, -yoffset, 0);

        return(startPos + offset);
    }
예제 #3
0
    public Material ChooseTheMat(int level, GemMeshType meshType)
    {
        Material result = null;

        switch (meshType)
        {
        case GemMeshType.Sphere:
            if (level == 1)
            {
                result = new Material(SphereLv1);
            }
            if (level == 2)
            {
                result = new Material(SphereLv2);
            }
            if (level == 3)
            {
                result = new Material(SphereLv3);
            }
            if (level == 4)
            {
                result = new Material(SphereLv4);
            }
            if (level == 5)
            {
                result = new Material(SphereLv5);
            }
            break;

        case GemMeshType.Oval:
            if (level == 1)
            {
                result = new Material(OvalLv1);
            }
            if (level == 2)
            {
                result = new Material(OvalLv2);
            }
            if (level == 3)
            {
                result = new Material(OvalLv3);
            }
            if (level == 4)
            {
                result = new Material(OvalLv4);
            }
            if (level == 5)
            {
                result = new Material(OvalLv5);
            }
            break;

        case GemMeshType.LowSquareDiamon:
            if (level == 3)
            {
                result = new Material(LowSquareDiamon);
            }
            break;

        case GemMeshType.LowSphereDiamon:
            if (level == 3)
            {
                result = new Material(LowSphereDiamon);
            }
            break;

        case GemMeshType.HighSphereDiamon:
            if (level == 4)
            {
                result = new Material(HighSphereDiamonLv4);
            }
            if (level == 5)
            {
                result = new Material(HighSphereDiamonLv5);
            }
            break;

        case GemMeshType.HighSquareDiamon:
            if (level == 4)
            {
                result = new Material(HighSquareDiamonLv4);
            }
            if (level == 5)
            {
                result = new Material(HighSquareDiamonLv5);
            }
            break;

        default:
            result = new Material(SphereLv1);
            break;
        }
        return(result);
    }