Exemple #1
0
    private void Start()
    {
        _cubePool = new ColorCubePool(colorCubePrefab);

        ObservableRandomEventTrigger spawnStream = gameObject.AddComponent <ObservableRandomEventTrigger>();

        spawnStream.OnRandomEventAsObservable().Subscribe(_ => {
            var colorCube           = _cubePool.Rent();
            colorCube.ColorCubePool = _cubePool;

            // Debug.Log("SPAWNED NEW CUBE FROM POOL");
        });

        ObservableTriggerTrigger scoreCubeCountTrigger = scoreCube.AddComponent <ObservableTriggerTrigger>();

        scoreCubeCountTrigger.OnTriggerEnterAsObservable().Subscribe(x => {
            if (x.GetComponent <Renderer>().material.color.r == scoreCube.GetComponent <Renderer>().material.color.r)
            {
                isScoreable.Value = true;
            }
        });
        scoreCubeCountTrigger.OnTriggerExitAsObservable().Subscribe(_ => {
            isScoreable.Value = false;
        });

        ObservableRandomEventTrigger scorCubeRandomColorTrigger = scoreCube.AddComponent <ObservableRandomEventTrigger>();

        scorCubeRandomColorTrigger.OnRandomEventAsObservable().Subscribe(_ => {
            scoreCube.GetComponent <Renderer>().material = _materialsAlpha[UnityEngine.Random.Range(0, 2)];
        });

        scoreButton.OnClickAsObservable().Subscribe(_ => {
            if (isScoreable.Value)
            {
                score.Value++;
                isScoreable.Value = false;
            }
            else
            {
                score.Value--;
            }
        });

        score.SubscribeToText(scoreText);
    }
Exemple #2
0
    // Use this for initialization
    void Start()
    {
        // also possible as singleton or other global gameobject
        _cubePool = new ColorCubePool(colorCubePrefab);

        // spawn cubes at random time interval with object pool
        var spawnStream = gameObject.AddComponent<ObservableRandomEventTrigger>();
        spawnStream.OnRandomEventAsObservable().Subscribe(_ => {
            var colorCube = _cubePool.Rent();
            colorCube.ColorCubePool = _cubePool;

            Debug.Log("SPAWNED NEW CUBE FROM POOL");
        });

        // check for scorecount
        scoreCube.AddComponent<ObservableTriggerTrigger>();
        scoreCube.GetComponent<ObservableTriggerTrigger>().OnTriggerEnterAsObservable().Subscribe(x => {
            if (x.GetComponent<Renderer>().material.color.r == scoreCube.GetComponent<Renderer>().material.color.r) {
                isScoreable.Value = true;
            }
        });
        // disable scorecount
        scoreCube.GetComponent<ObservableTriggerTrigger>().OnTriggerExitAsObservable().Subscribe(_ => {
            isScoreable.Value = false;
        });
        // change color for score border
        scoreCube.AddComponent<ObservableRandomEventTrigger>();
        scoreCube.GetComponent<ObservableRandomEventTrigger>().OnRandomEventAsObservable().Subscribe(_ => {
            scoreCube.GetComponent<Renderer>().material = _materialsAlpha[UnityEngine.Random.Range(0, 2)];
        });

        // get button and increment score
        scoreButton.OnClickAsObservable().Subscribe(_ => {
            if (isScoreable.Value) {
                score.Value++;
                isScoreable.Value = false;
            } else {
                score.Value--;
            }
        });

        // change score text according to text
        score.SubscribeToText(scoreText);
    }