public static void ShowBlock(CSBlockType type) { instance.handMeshRenderer.enabled = false; instance.blockMeshFilter.mesh = ChunkMeshGenerator.GetBlockMesh(type); instance.blockMeshRenderer.material.mainTexture = ChunkMeshGenerator.GetBlockTexture(type); instance.blockMeshFilter.transform.gameObject.SetActive(true); }
// Start is called before the first frame update void Start() { shadowTrans = transform.Find("shadow"); shadow = shadowTrans.GetComponent <Renderer>().material; meshTrans = transform.Find("mesh_parent/mesh"); MeshFilter meshFilter = meshTrans.GetComponent <MeshFilter>(); meshFilter.sharedMesh = ChunkMeshGenerator.GetBlockMesh(type); if (ChunkMeshGenerator.IsCubeType(type)) { meshFilter.transform.localScale = Vector3.one / 2; } meshTrans.GetComponent <MeshRenderer>().material.mainTexture = ChunkMeshGenerator.GetBlockTexture(type); RefreshMesh(); }
string Render(CSBlockType type, string dir = null) { GameObject go = null; if (type != CSBlockType.Chest) { go = new GameObject(); go.AddComponent <MeshFilter>().sharedMesh = ChunkMeshGenerator.GetBlockMesh(type); go.AddComponent <MeshRenderer>().sharedMaterial = new Material(Shader.Find("Custom/CutoutDiffuse")); go.GetComponent <MeshRenderer>().sharedMaterial.mainTexture = ChunkMeshGenerator.GetBlockTexture(type); } else { GameObject prefab = Resources.Load <GameObject>("Prefabs/Entity/Chest"); go = Instantiate(prefab); } RenderTexture rt = RenderTexture.GetTemporary(size * 2, size * 2, 24, RenderTextureFormat.ARGB32); Camera.main.targetTexture = rt; Camera.main.Render(); Camera.main.targetTexture = null; Texture2D tex = new Texture2D(size, size, TextureFormat.ARGB32, true); //降分辨率 RenderTexture tempRt = RenderTexture.GetTemporary(tex.width, tex.height, 24, RenderTextureFormat.ARGB32); Graphics.Blit(rt, tempRt); RenderTexture.active = tempRt; tex.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); tex.Apply(); RenderTexture.active = null; rt.Release(); tempRt.Release(); string path = ""; if (dir == null) { path = EditorUtility.SaveFilePanel("保存", "", type.ToString(), "png"); if (path.Length == 0) { DestroyImmediate(tex); DestroyImmediate(go); return(null); } path = path.Substring(path.IndexOf("Assets")); } else { path = dir + "/" + type.ToString() + ".png"; path = path.Substring(path.IndexOf("Assets")); } byte[] bytes = tex.EncodeToPNG(); System.IO.File.WriteAllBytes(path, bytes); AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate); TextureImporter TextureI = AssetImporter.GetAtPath(path) as TextureImporter; TextureI.textureCompression = TextureImporterCompression.Uncompressed; TextureI.mipmapEnabled = false; TextureI.wrapMode = TextureWrapMode.Clamp; AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate); AssetDatabase.Refresh(); DestroyImmediate(tex); if (DestroyAfterFinish) { DestroyImmediate(go); } return(path); }