总结这件事尽我所能:我有一些代码,设置一个布尔值设置为true。当启用这个小复选框,它按预期工作,使游戏正常运行。
但是,后来在某一点上的代码将这个布尔为假(请记住,它是一个公共布尔)。不幸的是,当启用该复选框。控制台读取“真,假真,假”等的,其防止所期望的结果。
如果我取消选中该复选框,则输出读取“假的,真的,假的,真正的”等,防止任何从工作。
是否有禁止从有游戏中的任何影响这个愚蠢的复选框的方法吗?我曾尝试[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;
}
}
(请注意,一些本用于调试,所以一些位会出来的地方只是为了测试一下吧!)
谢谢!我希望这是不够清楚。
我测试所提供的代码,并担任我所期望的 - 在UI的复选框留在同步与运行代码的bool
的状态。控制台日志也一致显示正确的值。
我能够复制您通过添加脚本的第二个实例描述的行为。试着改变你的print
呼叫print($"{start} {GetHashCode()}");
。你应该看到的只有一个在控制台GetHashCode()
值。如果你看到两个值,你肯定有脚本的两个实例。
我修好了它!我删除从它被附加到游戏对象的脚本,然后设置布尔为静态,并从那里引用它。
感谢反正帮助!