Beispiel #1
0
        private void Awake()
        {
            movement = GetComponent <Movement>();
            matching = GetComponent <Matching>();

            playerPool = new PlayerPool(prefab);
            transforms = new TransformAccessArray(4, 2);

            for (var i = 0; i < 4; i++)
            {
                var rent = playerPool.Rent();
                var trs  = rent.transform;

                rent.index = i;
                transforms.Add(trs);
            }

            matching
            .JoinClientAsObservable
            .Subscribe(index =>
            {
                Debug.Log(index.ToString());

                for (var i = 0; i < transforms.capacity; i++)
                {
                    var trs = transforms[i];

                    if (trs.GetComponent <IdentifierComponent>().index != index)
                    {
                        continue;
                    }

                    player = trs;
                    trs.gameObject.AddComponent <PlayerController>();
                    transforms.RemoveAtSwapBack(i);
                    break;
                }
            });

            matching
            .LeaveClientAsObservable
            .Subscribe(x =>
            {
                var go = player.gameObject;
                Destroy(go.GetComponent <PlayerController>());
                transforms.Add(player);
            });
        }