Почему Line Renderer в Unity не обновляется? - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь нарисовать линию от камеры к экземпляру объекта. Я использую сценарий UnityARHitTest Example. Когда я касаюсь вертикальной плоскости, объект создается, и я хочу нарисовать линию от камеры к объекту. Когда я перемещаю свое устройство, линия должна отображаться из центра моей камеры . По какой-то причине средство визуализации линии не отображается, когда я вызываю его в Позднем обновлении.

    LineRenderer lins;
    public GameObject Lineprefab;

bool HitTestWithResultType (ARPoint point, ARHitTestResultType resultTypes)
{
    List<ARHitTestResult> hitResults = UnityARSessionNativeInterface.GetARSessionNativeInterface ().HitTest (point, resultTypes);
    if (hitResults.Count > 0 && check==true) 
    {
        foreach (var hitResult in hitResults) 
        {
            Debug.Log ("Got hit!");

            if (Select == 0)
            {
                Debug.Log("hit-zero!");
                Instantiate(Instaobj[0], ForSelect);
                check = false;
            }

            if (Select == 1)
            {
                Debug.Log("hit-one!");
                Instantiate(Instaobj[1], ForSelect);
                check = false;
            }

            if (Select == 2)
            {
                Debug.Log("hit-two!");
                Instantiate(Instaobj[2], ForSelect);
                check = false;
            }

            if (Select == 3)
            {
                Debug.Log("hit-three!");
                Instantiate(Instaobj[3], ForSelect);
                check = false;
            }

            if (Select == 4)
            {
                Debug.Log("hit-four!");
                Instantiate(Instaobj[4], ForSelect);
                check = false;
            }

            if (Select == 5)
            {
                Debug.Log("hit-five!");
                Instantiate(Instaobj[5], ForSelect);
                check = false;
            }

            m_HitTransform.position = UnityARMatrixOps.GetPosition (hitResult.worldTransform);
            m_HitTransform.rotation = UnityARMatrixOps.GetRotation (hitResult.worldTransform);
            Debug.Log (string.Format ("x:{0:0.######} y:{1:0.######} z:{2:0.######}", m_HitTransform.position.x, m_HitTransform.position.y, m_HitTransform.position.z));

            obj.StopPlaneTracking();
            if (GameObject.Find("debugPlanePrefab(Clone)"))
                GameObject.Find("debugPlanePrefab(Clone)").SetActive(false);
            else
                Debug.Log("no prefab");


            //lins.SetPosition(0, m_HitTransform.position);
            //lins.SetPosition(1, obj.m_camera.transform.position);

            return true;
        }
    }
    return false;
}

Когда я использую lins.setposition () в вышеприведенном методе (который комментируется), в выводе отображается строка. Когда я использую lins.setposition () в приведенном ниже LateUpdate (), вывод не отображается, ничего не происходит.

private void Start()
{
    spawngenerator();
}

void spawngenerator()
{
    GameObject newline = Instantiate(Lineprefab);
    lins = newline.GetComponent<LineRenderer>();
    //lins.SetPosition(0, m_HitTransform.position);
    //lins.SetPosition(1, obj.m_camera.transform.position);
}


private void LateUpdate()
{
    lins.SetPosition(0,obj.m_camera.transform.position );
    lins.SetPosition(1,m_HitTransform.position );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...