使用TreeInstance将树添加到Terrain C#

时间:2018-12-21 06:57:57

标签: c# unity3d

我尝试使用以下代码将树木添加到我的地形中:

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下设置的:

Apple ANCS

2 个答案:

答案 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,您将需要对其进行数学运算或像我一样检查范围