Saya memiliki skrip yang saya tambahkan objek Terrain (saya seret dan lepas terrain di bidang Terrain publik).
Terrain sudah disiapkan di Unity untuk memiliki 2 PaintTextures: 1 adalah kotak (disiapkan dengan ukuran ubin sehingga membentuk pola kotak-kotak) dan yang ke-2 adalah gambar rumput:
Juga Kekuatan Target dari PaintTexture pertama diturunkan sehingga pola kotak-kotak juga mengungkapkan beberapa rumput di bawahnya.
Sekarang saya ingin, pada saat run time, untuk mengubah Ukuran Tile dari PaintTexture pertama, yaitu memiliki lebih atau kurang checker tergantung pada berbagai kondisi run time. Saya telah melihat dokumentasi Unity dan saya telah melihat Anda memiliki Terrain.terrainData.SplatPrototype
array yang memungkinkan Anda untuk mengubah ini. Juga ada RefreshPrototypes()
metode pada terrainData
objek dan Flush()
metode pada Terrain
objek. Jadi saya membuat skrip seperti ini:
public class AStarTerrain : MonoBehaviour {
public int aStarCellColumns, aStarCellRows;
public GameObject aStarCellHighlightPrefab;
public GameObject aStarPathMarkerPrefab;
public GameObject utilityRobotPrefab;
public Terrain aStarTerrain;
void Start () {
//I've also tried NOT drag and dropping the Terrain on the public field
//and instead just using the commented line below, but I get the same results
//aStarTerrain = this.GetComponents<Terrain>()[0];
Debug.Log ("Got terrain "+aStarTerrain.name);
SplatPrototype[] splatPrototypes = aStarTerrain.terrainData.splatPrototypes;
Debug.Log("Terrain has "+splatPrototypes.Length+" splat prototypes");
SplatPrototype aStarCellSplat = splatPrototypes[0];
Debug.Log("Re-tyling splat prototype "+aStarCellSplat.texture.name);
aStarCellSplat.tileSize = new Vector2(2000,2000);
Debug.Log("Tyling is now "+aStarCellSplat.tileSize.x+"/"+aStarCellSplat.tileSize.y);
aStarTerrain.terrainData.RefreshPrototypes();
aStarTerrain.Flush();
}
//...
Masalahnya adalah, tidak ada yang berubah, peta pemeriksa tidak disusun ulang. Keluaran konsol dengan benar memberi tahu saya bahwa saya mendapatkan objek Terrain dengan nama yang tepat, bahwa ia memiliki jumlah prototipe percikan yang tepat dan bahwa saya memodifikasi tileSize pada objek SplatPrototype yang sesuai dengan tekstur yang tepat. Ini juga memberitahu saya bahwa nilainya telah berubah. Tapi tidak ada yang diperbarui dalam tampilan grafis aktual.
Jadi tolong, apa yang saya lewatkan?