Запретить Unity Editor Inspector Checkbox от каких-либо действий в игре - PullRequest
0 голосов
/ 10 февраля 2019

Чтобы подвести итог, я могу: У меня есть код, который устанавливает логическое значение в true.Когда этот маленький флажок включен, он работает как задумано, позволяя игре нормально функционировать.When set to true it does as expected

Однако позже код в какой-то момент устанавливает это логическое значение в false (помните, что это public логическое значение).К сожалению, когда этот флажок включен.Консоль читает «true, false, true, false» и т. Д., Что предотвращает желаемый результат.You can see that the output is true, false, true, false when the checkbox is enabled

Если я отключу этот флажок, то на выходе будет выведено «false, true, false, true» и т. Д., Что мешает работе чего-либо.Nothing works!!!

Есть ли способ отключить этот дурацкий флажок для какого-либо эффекта в игре?Я попытался [system.nonserialized] безрезультатно.По крайней мере, есть ли способ отключить и включить этот флажок в коде?

По запросу, вот код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class startAgain : MonoBehaviour {
    public bool start;

    // Use this for initialization
    void Start () {
        //start = true;
    }

    public void use ()
    {
        start = true;
    }

    // Update is called once per frame
    void Update () {
        print(start);
    }

    public void rest()
    {
        StartCoroutine(Waittostart());
        Vector3 ball = GameObject.Find("Ball").transform.localPosition = new Vector3(0,0,0);
        Transform lpadlx = GameObject.Find("Player Paddle").transform;
        Vector3 lpadpos = lpadlx.position;
        Vector3 leftpaddle = GameObject.Find("Player Paddle").transform.position = new Vector3(lpadpos.x, 0, 0);

        Transform rpadlx = GameObject.Find("AI Paddle").transform;
        Vector3 rpadpos = rpadlx.position;
        Vector3 rightpaddle = GameObject.Find("AI Paddle").transform.position = new Vector3(rpadpos.x, 0, 0);
    }

    IEnumerator Waittostart()
    {
        print("RUNNING!");
        start = false;
        yield return new WaitForSeconds(2);
        start = true;
    }

}

(обратите внимание, что некоторые из них использовались для отладкитак что некоторые биты будут неуместны только для проверки!)

Спасибо!Надеюсь, это было достаточно ясно.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Я исправил это!Я удалил скрипт из игрового объекта, к которому он был прикреплен, а затем установил логическое значение как статическое и сослался на него оттуда.

В любом случае спасибо за помощь!

0 голосов
/ 10 февраля 2019

Я протестировал предоставленный код, и он работал, как я и ожидал, - флажок в пользовательском интерфейсе синхронизировался с состоянием bool в работающем коде.Журналы консоли также последовательно показывали правильное значение.

Мне удалось повторить описанное вами поведение, добавив второй экземпляр сценария.Попробуйте изменить print звонок на print($"{start} {GetHashCode()}");.Вы должны увидеть только одно значение для GetHashCode() в консоли.Если вы видите два значения, у вас определенно есть два экземпляра сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...