【问题标题】:Render GameObject only when they are near to the controller/camera仅在靠近控制器/相机时渲染游戏对象
【发布时间】:2016-07-02 07:36:38
【问题描述】:

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

是否可以仅在靠近控制器时才渲染对象?

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

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

【问题讨论】:

  • 您必须担心性能是完全不可思议的。这绝对不是问题。请注意,Unity 完全自动为您剔除所有内容。
  • 虽然你说的是真的,但我们在游戏中仍能获得 20-40 左右的 fps。我在 Z3 紧凑型上对其进行测试。
  • 等待 - 树 ??您肯定在使用 Unity 的地形系统 - 对吧?它非常高效。本质上,你“不能自己造树”!????你是手动造树吗?!
  • 请附上截图,否则无法提供帮助
  • 你的树是广告牌吧?

标签: performance unity3d rendering


【解决方案1】:

你可以通过两种方式做到这一点。

1。 Unity 内置的细节层次 (LOD) 是您应该寻求的第一个解决方案。为这些游戏对象创建多个 3D 模型。高细节对象,中等细节,低细节和真正真正的行细节多边形。

当您远离该对象时,Unity 只会显示低细节的 3D 模型。只要您靠近对象,Unity 就会自动将 3D 模型与高度详细的 3D 模型交换。这提高了游戏的记忆力和速度。要了解如何设置 Google“详细程度统一”并观看视频或关注 Unity tutorial。它需要视觉来理解

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

以下是此方法的完整工作代码。只需将以下代码附加到您想要在远离相机时隐藏的每个树木或网格。 您可以调整 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");
        }
    }
}

【讨论】:

  • 这是我一直想做的事情,但我无法统一实现。非常感谢!
  • 等一下,伙计——你包括你自己的“手动”树吗?!!像真正的实体树?
  • 统一的所有相机都有两个“剪切平面”距离值:远和近。相机将仅渲染在此范围内与相机有一定距离的对象或对象的一部分。程序员,你为什么不用那个?
  • @JoeBlow 我正在考虑将它们一一放置。哈哈。对不起,我不那么活跃,我一直忘记检查这个。还有,Unity 内置的树系统?是地形里的那个吗?我对此真的有点陌生。
  • 嗨@carlolol 当然,在地形。我真的建议你花一些时间在地形系统上,试一试。我相信您在 Unity 中所做的只是单击一个按钮并完成所有的树时,您完全浪费了“制作树”的时间。
猜你喜欢
  • 2020-09-23
  • 2010-11-04
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多