我尝试使用以下代码将树木添加到我的地形中:
fileprivate func logout() {
let logout = IMAPSessionHelper.shared().imapSession.disconnectOperation()
logout?.start({ (error) in
if let error = error {
logger(error.localizedDescription)
return
}
IMAPSessionHelper.destroy()
_ = self.navigationController?.popToRootViewController(animated: true)
})
}
函数// Create Trees
for (int x = 0; x < terrainData.heightmapWidth; x++)
{
for (int z = 0; z < terrainData.heightmapWidth; z++)
{
if (GetBiome(x, z) == "Grasland")
{
int r = UnityEngine.Random.Range(0, 500);
if (r == 0)
{
Terrain terrain = GetComponent<Terrain>();
TreeInstance treeTemp = new TreeInstance();
treeTemp.position = new Vector3(x, 0, z);
treeTemp.prototypeIndex = 0;
treeTemp.widthScale = 1f;
treeTemp.heightScale = 1f;
treeTemp.color = Color.white;
treeTemp.lightmapColor = Color.white;
terrain.AddTreeInstance(treeTemp);
terrain.Flush();
}
}
}
}
正常工作,我通过将树放置为GameObjects来检查它是否工作正常。
是否有我没想到的遗漏?
因为没有生成任何一棵树。
我要生成的树是在PaintTrees下设置的:
答案 0 :(得分:1)
请阅读下面的注释作为注释,我希望这能解释并解决该问题。 我已经对此进行了统一测试以确认。
<textarea disabled name="overview" class="form-control" id="OverviewContent" style="width: 100%; height: 200px"></textarea>
答案 1 :(得分:0)
有点晚了,但是不是
int r = UnityEngine.Random.Range(0, 500);
if (r == 0)
做
int r = UnityEngine.Random.Range(0, 500);
if (r >= 0 && <= 1)
检查范围。因为您要检查一个不可能的数字,所以它总是会接近,但永远不会为0,例如0.000230 ... f,您将需要对其进行数学运算或像我一样检查范围