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); }
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); }
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); }