仅当游戏对象靠近 controller/camera 时渲染游戏对象

Render GameObject only when they are near to the controller/camera

我和我的朋友正在尝试在 android 上开发游戏,我们正在尽最大努力减少延迟。

是否可以只在物体靠近控制器时才渲染?

我们有这个岛,所以场景中有很多树。

我们对 Unity 还是很陌生。如果可能的话,怎么做?谢谢

您可以通过两种方式执行此操作。

1。 Unity 的内置 细节级别 (LOD) 是您应该为这些游戏对象 for.Create 多个 3D 模型的第一个解决方案。高细节对象、中细节、低细节和真正真正的行细节多边形。

当你离那个物体很远时,Unity 只会显示低细节的 3D 模型。一旦您靠近对象,Unity 就会自动将 3D 模型与高细节 3D 模型交换。这提高了游戏的内存和速度。要查看如何设置 Google "Level of Detail unity" 并观看视频或关注 Unity tutorial。需要视觉理解

2。另一种解决方案是使用 Vector3.Distance 检查相机和要隐藏的游戏对象之间的距离,然后通过将 Renderer.enabled 设置为 false 来禁用 Renderer 来隐藏它。 =17=]

下面是此方法的完整工作代码。只需将下面的代码附加到 each 你想要在远离相机时隐藏的树木或网格。 您可以调整 distanceToAppear 变量以满足您的需要。

public class MeshMonitor : MonoBehaviour
{
    Transform mainCamTransform; // Stores the FPS camera transform
    private bool visible = true;
    public float distanceToAppear = 8;
    Renderer objRenderer;

    private void Start()
    {
        mainCamTransform = Camera.main.transform;//Get camera transform reference
        objRenderer = gameObject.GetComponent<Renderer>(); //Get render reference
    }
    private void Update()
    {
        disappearChecker();
    }
    private void disappearChecker()
    {
        float distance = Vector3.Distance(mainCamTransform.position, transform.position);

        // We have reached the distance to Enable Object
        if (distance < distanceToAppear)
        {
            if (!visible)
            {
                objRenderer.enabled = true; // Show Object
                visible = true;
                Debug.Log("Visible");
            }
        }
        else if (visible)
        {
            objRenderer.enabled = false; // Hide Object
            visible = false;
            Debug.Log("InVisible");
        }
    }
}