Ошибки указывают на то, что вы передаете значения типа float, в то время как методы и конструкторы ожидают значения типа int.
Например, метод TerrainGenerator.GenerateTerrain ожидает аргументы типа int, а не float, и конструктор Vector3Int принимает три параметра типа int. В вашем коде переменные xPos и zPos имеют тип float, поэтому необходимо привести их к типу int.
Можно использовать явное приведение, если вы уверены, что потеря дробной части допустима:
int xPosInt = (int)xPos;
int zPosInt = (int)zPos;
chunkData.Blocks = TerrainGenerator.GenerateTerrain(xPosInt, zPosInt);
var chunk = Instantiate(ChunkPrefab, new Vector3Int(xPosInt, 0, zPosInt), Quaternion.identity, transform);
Или можно делать приведение непосредственно при передаче параметров:
chunkData.Blocks = TerrainGenerator.GenerateTerrain((int)xPos, (int)zPos);
var chunk = Instantiate(ChunkPrefab, new Vector3Int((int)xPos, 0, (int)zPos), Quaternion.identity, transform);
Если расчет позиций может быть выполнен с целочисленными значениями, вы можете сразу использовать int вместо float. Например, если значения ChunkRenderer.ChunkWidth и ChunkRenderer.BlockScale являются целыми числами, то можно изменить тип переменной:
int xPos = x * ChunkRenderer.ChunkWidth * ChunkRenderer.BlockScale;
int zPos = y * ChunkRenderer.ChunkWidth * ChunkRenderer.BlockScale;
Но если хотя бы один из множителей имеет тип float, то результат будет float и потребует приведения.
Assets\Scenes\GameWorld.cs(21,69): error CS1503: Argument 1: cannot convert from 'float' to 'int'
Assets\Scenes\GameWorld.cs(21,75): error CS1503: Argument 2: cannot convert from 'float' to 'int'
Assets\Scenes\GameWorld.cs(24,69): error CS1503: Argument 1: cannot convert from 'float' to 'int'
Assets\Scenes\GameWorld.cs(24,78): error CS1503: Argument 3: cannot convert from 'float' to 'int'
--- код:
GameWorld:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameWorld : MonoBehaviour
{
public Dictionary<Vector2Int, ChunkData> ChunkDatas = new Dictionary<Vector2Int, ChunkData>();
public ChunkRenderer ChunkPrefab;
void Start()
{
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
float xPos = x * ChunkRenderer.ChunkWidth * ChunkRenderer.BlockScale;
float zPos = y * ChunkRenderer.ChunkWidth * ChunkRenderer.BlockScale;
ChunkData chunkData = new ChunkData();
chunkData.Blocks = TerrainGenerator.GenerateTerrain(xPos, zPos);
ChunkDatas.Add(new Vector2Int(x,y), chunkData);
var chunk = Instantiate(ChunkPrefab, new Vector3Int(xPos, 0, zPos), Quaternion.identity, transform);
chunk.ChunkData = chunkData;
chunk.ParentWorld = this;
}
}
}
}
--- Комментарий:
Вы уж помогите, сам я чего то не понимаю как исправить эти четыре ошибки.