Hallo liebe Leute,
ich bin relativ neu was das Arbeiten mit Unity2D angeht, aber nicht ganz neu mit C#.
Meine Frage ist nun, ich habe dieses Skript, was zur Laufzeit zu einem bestimmten Prefab, kopien davon erstellt und diese Kopien sollen in einem
Grid/Tilemap reinplatziert werden, und ich habe den Code auch vorher getestet, und der Code erkennt auch die Tiles innerhalb der Tilemap, aber obwohl ich eine feste Border berechnet habe, bis wohin die Loop laufen soll, hängt Unity3D sich auf, leider und ich verstehe einfach nicht genau wieso und wäre daher sehr dankbar wenn ich ein bisschen Hilfe bekäme
.
hier der Code:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
//This scriptt is attached to the tilemap "Grounds"
public class SpriteToPrefab : MonoBehaviour
{
private Tilemap chocolateGround;
public GameObject Prefab;
private Vector3 getCenterOfCell()
{
Tilemap map = GetComponent<Tilemap>();
Vector3Int cellPosition = map.LocalToCell(transform.localPosition);
transform.localPosition = map.GetCellCenterLocal(cellPosition);
return transform.localPosition;
}
// Start is called before the first frame update
void Start()
{
chocolateGround = GetComponent<Tilemap>();
chocolateGround.origin = new Vector3Int(-7, 1, 0);
chocolateGround.size = new Vector3Int(15, 10, 0);
var bounds = chocolateGround.origin + chocolateGround.size;
//This code only works when the brush is set on "Default Brush"!
for (int y = chocolateGround.origin.y; y < bounds.y; y--)
{
for (int x = chocolateGround.origin.x; x < bounds.x; x++)
{
var centerOfCell = getCenterOfCell();
//create a prefab in memory!
Instantiate(Prefab, centerOfCell, Quaternion.identity);
}
}
}
}
|