【问题标题】:Unity 3D Text: update position on location changeUnity 3D Text:在位置更改时更新位置
【发布时间】:2012-09-13 10:21:13
【问题描述】:

我正在使用适用于 Android 的 unity 和 vuforia 创建 AR 应用(项目)。我有一个 3d 文本,我想根据用户的位置更改它的位置。

现在,我可以获取他的位置和更新,我可以使用 OnGUI 函数将其显示在 Gui 标签上。

3d 文本是一个预制件,所以每次用户到达新位置时我都必须实例化它吗?

3d 文本应该只出现一次(取决于他当前的位置)。这意味着,我必须首先销毁以前实例化的文本,还是会被覆盖?

最后,我应该在哪里编写实例化代码?我的意思是,在 Update() 函数上?开始()?所以只在位置变化时运行,而不是一直运行。

我目前正在熟悉 Unity,并试图弄清楚它是如何工作的。 询问我是否需要更多信息。

提前感谢您的时间和回答!

【问题讨论】:

    标签: android unity3d


    【解决方案1】:

    取决于您的项目设置,可能还有其他方法可以做到这一点,但我建议通过网格渲染器隐藏 3D 文本。在您的代码中,如果自上次更新以来位置发生变化,您想检查更新功能。你如何做到这一点是通过创建两个变量:一个用于用户当前位置,一个用于上一次更新调用中的位置。所以这里的秘密是两个函数:Update 和 LateUpdate。

    这是一个例子

    #pragma strict
    @script ExecuteInEditMode;
    
    var curPos : Vector3;
    var lastPos : Vector3;
    var timeToWait : float = 2.0;
    var shwoing : boolean;
    
    function Start()
    {
        ShowText(false);
    }
    
    function Update()
    {
        // check if our current position is the same as our last position
        if(lastPos != curPos && !showing)
        {
            ShowText(true);     // Show the 3d text
        }
    
        if(lastPos == curPos && showing)
        {
            ShowText(false);    // Don't show the text
        }
    }
    
    function LateUpdate()
    {
        lastPos = curPos;   // change our last Positon to our current position
    }
    
    function ShowText(state : boolean)
    {
        renderer.enabled = state;    // enable or disable the renderer
        showing = true;              // variable to tell to keep showing text
        yield WaitForSeconds(timeToWait);   // wait a few seconds before changing the state
        showing = false;             // tell update to not show text
    }
    

    以这种方式做事,您不必面对清理场景的麻烦,因为您只需处理一次 3DText 实例。我希望这会有所帮助……它可能需要做一些工作,但我现在得跑了。让我知道你是否需要我再解释一下。

    【讨论】:

    • 非常感谢!你帮助我确保我走在正确的道路上!感谢您的时间
    • 任何时候......很高兴我能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多