在游戏中有任何行动阻止统一编辑器检查复选框

问题描述 投票:0回答:2

总结这件事尽我所能:我有一些代码,设置一个布尔值设置为true。当启用这个小复选框,它按预期工作,使游戏正常运行。 When set to true it does as expected

但是,后来在某一点上的代码将这个布尔为假(请记住,它是一个公共布尔)。不幸的是,当启用该复选框。控制台读取“真,假真,假”等的,其防止所期望的结果。 You can see that the output is true, false, true, false when the checkbox is enabled

如果我取消选中该复选框,则输出读取“假的,真的,假的,真正的”等,防止任何从工作。 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;
    }

}

(请注意,一些本用于调试,所以一些位会出来的地方只是为了测试一下吧!)

谢谢!我希望这是不够清楚。

c# unity3d checkbox
2个回答
1
投票

我测试所提供的代码,并担任我所期望的 - 在UI的复选框留在同步与运行代码的bool的状态。控制台日志也一致显示正确的值。

我能够复制您通过添加脚本的第二个实例描述的行为。试着改变你的print呼叫print($"{start} {GetHashCode()}");。你应该看到的只有一个在控制台GetHashCode()值。如果你看到两个值,你肯定有脚本的两个实例。


0
投票

我修好了它!我删除从它被附加到游戏对象的脚本,然后设置布尔为静态,并从那里引用它。

感谢反正帮助!

© www.soinside.com 2019 - 2024. All rights reserved.