http://xnaresources.com/default.asp?page=Tutorial:TileEngineSeries:1
Bu bağlantı sizi kiremit motoru oluşturmak için gerekenleri en kapsayan bir öğreticidir.
Uygulamalar Sıfırlama işlevi içindeki karoları oluşturuyor gibi görünüyor. İhtiyacınız olan tüm karoları depolayacak bir çeşit kiremit yöneticisi yaratmanız daha iyi olur.
Fayans oluşturma açısından, bir Yapı Dizisi veya Dizilerin Yapısı'nı kullanabilirsiniz. İlki için, en azından karoun konumunu saklayacak bir Çini sınıfı yaratabilirsiniz. Döşemeleri oluşturmak için bir sprite sayfasını kullanıyorsanız, çizmek için hangi döşemenin kullanılması gerektiğini belirlemek üzere bir TileID'yi de ekleyebilirsiniz.
Dizilerin Yapısı için, döşemeler (Döşeme Yöneticisi'nin içinde) ve başka bir TileID dizisi için kullanılacak olan Vektörler dizisini saklayabilirsiniz. Her iki yöntem de çalışır. Okunabilirlik ve Object Oriented Programlama uygulamaları için muhtemelen sizin için öneride bulunmanızı tavsiye ederim.
Texture2D ayrıca bir kez de yüklenmelidir. Yüklemenizi yaptığınız yeri veya daha fazla fayans yapmayı nasıl planladığınıza dair bir gönderme yapmıyorsunuz, bu yüzden planınızın her karo için texture2D'yi yüklemek olduğunu varsayıyorum. Bu da kötü bir fikir olurdu.
Son olarak, karo sınıf yapılmış bir kez, döngü anlamında, sizin kiremit yöneticisi veya döngü her bir parça için pozisyon yaratmak ve ayarlanması gereken işlevi başlatmak (yalancı kod) 'de: Sonra
int tileRowCount = mapSizeX/tileSizeX;
int tileColumnCount = mapSizeY/tileSizeY;
for(int rowIndex = 0; rowIndex < tileRowCount; rowIndex++)
{
for(int columnIndex = 0; columnIndex < tileColumnCount; columnIndex++)
{
tileList.Add(new Tile(new Vector2(columnIndex * tileSizeX, rowIndex * tileSizeY);
}
}
için çizim:
foreach(Tile tile in tileList)
{
///not exact Draw call, not looking at the documents right now
tile.Draw(spriteBatch, tileTexture, tile.Position);
}
Bu sizin peşinde olduğunuzu düşündüğüm şeyin özüdür. Yanlış yoldaysam, cevabı değiştireceğimi bana bildirin. Biraz daha cesur detayların üzerine atladım ama eğer herhangi bir sorunun varsa bağlantı var ve daha fazlasını isteyebilirsiniz.
DÜZENLENMİŞ: Çizim kısmı
kod biçiminde değildi