代码
先上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
public class InfiniteMapGenerator : MonoBehaviour
{
// Start is called before the first frame update
public int chunkSize = 16;
public float scale = 0.1f;
public Tilemap tilemap;
public Tile[] tiles;
public GameObject treePrefab;
public Transform playerTransform;
private Dictionary<Vector2Int, bool> activeChunks = new Dictionary<Vector2Int, bool>();
private Dictionary<Vector2Int, List<Vector3>> chunkTreePositions = new Dictionary<Vector2Int, List<Vector3>>();
private Dictionary<Vector2Int, List<GameObject>> chunkTrees = new Dictionary<Vector2Int, List<GameObject>>();
private Vector2Int currentChunk = new Vector2Int(0, 0);
private int seed;
void Start()
{
seed = Random.Range(0, 100001);
Random.InitState(seed);
// 找到一个合适的起始位置
Vector3 startPosition = FindSuitableStartPosition();
playerTransform.position = startPosition;
// 初始化当前块
currentChunk = new Vector2Int(Mathf.FloorToInt(startPosition.x / chunkSize), Mathf.Fl