进入或退出相机渲染范围内-血条动态显示

需求:敌人进入相机范围内,在UI界面上动态显示血条。未被渲染时,不显示血条。

 

Unity为我们提供了多种与渲染相关的接口,带大家看下:

OnPreRender:在摄像机开始渲染场景之前调用。Tips:Scene加载过程中或结束

OnPostRender:指场景都渲染完成后调用接口

OnRenderObject:在完成所有常规场景渲染后调用此函数。Tips:指场景开始渲染(刚开始执行渲染,还未渲染完成)时调用接口

OnWillRenderObject:当对象可见时,被相机渲染时 一直调用此函数。

 

可以发现,OnWillRenderObject才是与当前物体的渲染状态相关联。

但是依旧没法监听物体移除渲染范围的时候。只适用于在渲染时候去持续做某些逻辑。

翻了一下手册又发现两个函数:

OnBecameVisible:当物体进入摄像机渲染范围时会调用一次

OnBecameInvisible:当物体退出摄像机渲染范围时会调用一次

 

代码如下:

public void OnBecameVisible()
    {
        if (isRenderObject==false)
        {
            isRenderObject = true;
            intoRenderer?.Invoke();
        }
    }
    public void OnBecameInvisible()
    {
        if (isRenderObject == true)
        {
            isRenderObject = false;
            exitRenderer?.Invoke();
        }
    }


注意:OnBecameVisible、OnBecameInvisible、OnWillRenderObject只有在所挂物体(不包括子物体)有Render才有效。否则无法回调

血量条模块的设计可见文章:设计敌人血条模块

作者:Miracle
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/unity/110/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
海报
进入或退出相机渲染范围内-血条动态显示
需求:敌人进入相机范围内,在UI界面上动态显示血条。未被渲染时,不显示血条。   Unity为我们提供了多种与渲染相关的接口,带大家看下: OnPreRender:在……
<<上一篇
下一篇>>