Функция в скрипте не работает в редакторе при вызове функции одного скрипта в другом скрипте, но консоль возвращает правильные значения - PullRequest
0 голосов
/ 17 мая 2018

Функция IncreaseRadius в скрипте OrbitFireball, прикрепленная к CircleMovementTarget GameObject при вызове из editProperties. Скрипт, присоединенный к Radius (+). GameObject не возвращает изменение значений в редакторе или оригинальном скрипте, т.е. OrbitFireball (см. Справа в скрипте OribtFireball, OrbitDistance = 0.1), даже когда консоль возвращает изменения очень хорошо (см. Консоль, значения увеличиваются при нажатии на значок радиуса (+)).

Используемая версия Unity: 2017.2.1f1

App

...

 using HoloToolkit.Unity.InputModule;
 using UnityEngine;
 using System.Collections;

 public class OrbitFireball : MonoBehaviour, IInputClickHandler {

     public Transform target;
     public float orbitDistance = 0.1f;
     public float orbitDegreesPerSec = 90.0f;

     public GameObject Ball;


         // Use this for initialization
     void Start () {

     }

     void Orbit()
     {
         if(target != null)
         {
             // Keep us at orbitDistance from target
             transform.position = target.position + (transform.position - target.position).normalized * orbitDistance;
             transform.RotateAround(target.position, Vector3.back, orbitDegreesPerSec * Time.deltaTime);

             // Ball up and down
             Ball.transform.position = new Vector3(transform.position.x, transform.position.y, target.position.z);

         }
     }

     // Update is called once per frame
     void Update () {

        Orbit(); 
     }


    public void increaseRadius()
    {
        if (orbitDistance <= 0.3f)
        {
            orbitDistance += 0.1f;
            Debug.Log(orbitDistance);
        }
    }

    public void OnInputClicked(InputClickedEventData eventData)
    {
        throw new System.NotImplementedException();
    }
}

...

using System.Collections;
using System.Collections.Generic;
using HoloToolkit.Unity.InputModule;
using UnityEngine;

public class editProperties : OrbitFireball, IInputClickHandler {

    public void OnInputClicked(InputClickedEventData eventData)
    {
        if (gameObject.tag == "RadiusPlus")
        {
            increaseRadius();
        }
    }
}
...