Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么unity给我一个错误,说不是所有的代码路径都返回一个值_C#_Unity3d_Vector_Game Engine_Chunks - Fatal编程技术网

C# 为什么unity给我一个错误,说不是所有的代码路径都返回一个值

C# 为什么unity给我一个错误,说不是所有的代码路径都返回一个值,c#,unity3d,vector,game-engine,chunks,C#,Unity3d,Vector,Game Engine,Chunks,这是我的代码:(我想这是一个带有向量at函数PopulateVoxelMap的东西) 公共类块 { 公共合作组织; 游戏对象; 网格渲染器; 网状过滤器; int vertexIndex=0; 列表顶点=新列表(); 列表三角形=新列表(); 列表UV=新列表(); 字节[,]体素映射=新字节[VoxelData.ChunkWidth,VoxelData.ChunkHeight,VoxelData.ChunkWidth]; 世界; 公共块(ChunkCoord\u coord,World\u W

这是我的代码:(我想这是一个带有向量at函数PopulateVoxelMap的东西)

公共类块
{
公共合作组织;
游戏对象;
网格渲染器;
网状过滤器;
int vertexIndex=0;
列表顶点=新列表();
列表三角形=新列表();
列表UV=新列表();
字节[,]体素映射=新字节[VoxelData.ChunkWidth,VoxelData.ChunkHeight,VoxelData.ChunkWidth];
世界;
公共块(ChunkCoord\u coord,World\u World)
{
坐标=_坐标;
世界=_世界;
chunkObject=新游戏对象();
meshFilter=chunkObject.AddComponent();
meshRenderer=chunkObject.AddComponent();
mesh.material=world.material;
chunkObject.transform.SetParent(world.transform);
chunkObject.transform.position=新矢量3(坐标.x*体素数据.ChunkWidth,0f,坐标.z*体素数据.ChunkWidth);
chunkObject.transform.name=“Chunk”+coord.x+”,“+coord.z;
PopulateVoxelMap();
CreateMeshData();
CreateMesh();
}
void PopulateVoxelMap()
{
对于(int y=0;yVoxelData.ChunkWidth-1 | | y<0 | | y>VoxelData.ChunkHeight-1 | | z<0 | | z>VoxelData.ChunkWidth-1)
返回false;
其他的
返回true;
}
布尔检查体素(矢量3位置)
{
int x=数学楼层int(位置x);
int y=数学地板点(位置y);
int z=数学地板点(位置z);
如果(!IsVoxelInChunk(x,y,z))
返回false;
}
void AddVoxelDataToChunk(矢量3位置)
{
对于(int p=0;p<6;p++)
{
if(!CheckVoxel(pos+VoxelData.faceChecks[p]))
{
字节块ID=体素图[(int)pos.x,(int)pos.y,(int)pos.z];
添加(pos+VoxelData.voxelVerts[VoxelData.voxelTris[p,0]]);
添加(pos+VoxelData.voxelVerts[VoxelData.voxelTris[p,1]]);
添加(pos+VoxelData.voxelVerts[VoxelData.voxelTris[p,2]]);
添加(pos+VoxelData.voxelVerts[VoxelData.voxelTris[p,3]]);
AddTexture(world.blocktypes[blockID].GetTextureID(p));
三角形。添加(顶点索引);
三角形。添加(顶点索引+1);
三角形。添加(顶点索引+2);
三角形。添加(顶点索引+2);
三角形。添加(顶点索引+1);
三角形。添加(顶点索引+3);
顶点指数+=4;
}
}
}
void CreateMesh()
{
网格=新网格();
mesh.vertices=顶点.ToArray();
mesh.triangles=triangles.ToArray();
mesh.uv=uvs.ToArray();
mesh.normals();
meshFilter.mesh=网格;
}
void AddTexture(int-textureID)
{
浮动y=textureID/VoxelData.TextureAtlassizeInBlock;
float x=textureID-(y*体素数据.TextureAtlasSizeInBlocks);
x*=体素数据.NormalizedBlockTextureSize;
y*=体素数据.NormalizedBlockTextureSize;
y=1f-y-体素数据.NormalizedBlockTextureSize;
添加(新矢量2(x,y));
添加(新矢量2(x,y+体素数据.NormalizedBlockTextureSize));
添加(新矢量2(x+体素数据.NormalizedBlockTextureSize,y));
添加(新矢量2(x+体素数据.NormalizedBlockTextureSize体素数据.NormalizedBlockTextureSize));
}

CheckVoxel
没有在所有代码路径上返回有效的bool。它在哪里返回
true
?该方法的正确版本可能是:

bool CheckVoxel(Vector3 pos)
{
    int x = Mathf.FloorToInt(pos.x);
    int y = Mathf.FloorToInt(pos.y);
    int z = Mathf.FloorToInt(pos.z);

    if (!IsVoxelInChunk(x, y, z))
        return false;

    return true;
}
但这可以简单地改写为:

bool CheckVoxel(Vector3 pos)
{
    return IsVoxelInChunk(Mathf.FloorToInt(pos.x), 
                          Mathf.FloorToInt(pos.x),
                          Mathf.FloorToInt(pos.x))
}
很抱歉编辑混乱,资源管理器发疯了一段时间

bool CheckVoxel(Vector3 pos)
{
    int x = Mathf.FloorToInt(pos.x);
    int y = Mathf.FloorToInt(pos.y);
    int z = Mathf.FloorToInt(pos.z);

    if (!IsVoxelInChunk(x, y, z))
        return false;
}
例如,在该函数中,它仅返回if!IsVoxelInChunk(x,y,z)。如果该函数返回false,则该函数返回false,则更改:

if (!IsVoxelInChunk(x, y, z))
            return false;
致:


PopulateVoxelMap
方法返回
void
,因此该方法不能抛出该错误。您是否可以发布实际错误。它应该说明哪个函数出错。
return IsVoxelInChunk(x, y, z);