#c# #android #unity3d
#c# #Android #unity-game-engine
Вопрос:
У меня есть скрипт в моем приложении Unity (называется cubemove.cs).
У него есть закрытый член:
private float z_ref;
- Внутри моего
void Awake()
у меня есть строка для инициализации:z_ref = (float) 0.0;
В моем приложении установлена кнопка для запуска следующей функции onclick из cubemove.cs
public void zeroZ()
{
z_ref = (float) 45.0;
}
- Мой
void Update()
содержитDebug.Log("z_ref: " z_ref.ToString());
Когда я запускаю приложение и просматриваю выходные данные отладки, сначала это только печать z_ref: 0
. Это ожидаемо, поскольку именно для этого я инициализировал значение. Затем, когда я нажимаю кнопку в приложении (что приводит к выполнению zeroZ ()), я ожидаю, что теперь он напечатает 45. Вместо этого он чередуется между 45 и 0.
Вот изображение вывода отладки после нажатия кнопки
- До нажатия кнопки все было равно 0.
В моей исходной программе на самом деле было больше кода, когда я впервые столкнулся с этой проблемой со случайным изменением моего z_ref (оно не было исправлено на 45, zeroZ () была более сложной функцией и т.д.). Однако даже после того, как я изменил свой файл cubemove.cs на следующий приведенный ниже код, я все еще вижу точно такое же поведение z_ref, чередующееся между 0 и значением, которым оно должно быть.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cubemove : MonoBehaviour
{
private float z_ref;
void Awake()
{
z_ref = (float) 0.0;
}
void Start()
{
}
void Update()
{
Debug.Log("z_ref: " z_ref.ToString());
}
public void zeroZ()
{
z_ref = (float) 45.0;
}
}
После zeroZ()
вызова не должно быть причин, по которым z_ref должен отображаться как любое значение, отличное от 45. Что именно здесь происходит?
В случае, если это актуально, моей целью сборки является Android (изображение для вывода отладки из logcat).
Комментарии:
1. Есть ли у вас какие-либо другие объекты с этим скриптом на нем?
2. Я предполагаю, что есть 2 экземпляра
cubemove
.3. @HeejaeKim, вероятно, прав. Запишите идентификатор экземпляра или хэш-код, чтобы проверить, тот ли это сценарий.
4. Да, на самом деле было два экземпляра
cubemove
, глупый я. Проблема решена.
Ответ №1:
Как указано в комментарии, проблема была связана с несколькими экземплярами cubemove
(это было связано с более чем одним gameobject, но я тогда не понял).