当我与游戏对象保持一定距离时,它就会消失

时间:2018-04-10 15:42:20

标签: unity3d

我在Unity创建了一个村庄,但它的质量非常高,所以我遇到了性能问题。

我做了咬合烘烤并设法改善了一点。但Unity保持"看到"村庄即使它有很大的墙壁和我和村庄之间的大量树木。

当我离得太远时,我试图让整个城市消失,当我越来越近时,我会再次出现。

我试过这个脚本,但它没有用。 (脚本适用于AI,用于检测我是否足够接近以开始关注我)

编辑:

gameObject在层次结构中的外观

How the gameObject looks

里面是所有的道具分为3个其他Gameobjects(情节=围栏,和budynki =建筑物和道具=道具
(miasto是所有预制件所在的游戏对象的名称,我也将播放器控制器移动到此脚本,因此它应该检测到播放器)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Miasto : MonoBehaviour
{
    public Transform player;
    public float LookRadius = 240f;
    void Start()
    {
        GetComponent<Miasto>().enabled = true;
    }

    void Update()
    {
            if (Vector3.Distance(player.position, this.transform.position) > 240)
            {
                GetComponent<Miasto>().enabled = false;
            }
            else
                GetComponent<Miasto>().enabled = true;
    }

    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, LookRadius);
    }
}

2 个答案:

答案 0 :(得分:3)

试试这个,我禁用了meshRenderer,这使得它在视觉上消失了:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Miastro : MonoBehaviour
{
    public Transform player;
    MeshRenderer[] meshRenderer;
    public float LookRadius = 240f;

    void Start()
    {
        GetComponent<Miastro>().enabled = true;
        meshRenderer = gameObject.GetComponentsInChildren<MeshRenderer>();
    }

    void Update()
    {
        if (Vector3.Distance(player.position, this.transform.position) > 240)
        {
            foreach (MeshRenderer renderer in meshRenderer) 
            {
                renderer.enabled = false;
            }
        }
        else 
        {
            foreach (MeshRenderer renderer in meshRenderer)
            {
                renderer.enabled = true;
            }
        }
    }

    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, LookRadius);
    }
}

答案 1 :(得分:3)

你可以把它变成一个LOD对象,你的对象只有2级,什么也没有。