|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Coin : MonoBehaviour
- {
- private void OnCollisionEnter(Collision collision)
- {
- if (collision.gameObject.layer==LayerMask.NameToLayer("ground"))
- {
- CoinPool.instance.coinPool.Release(gameObject);
- }
- }
- }
复制代码- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Pool;
- public class CoinPool : MonoBehaviour
- {
- public GameObject coin;
- public static CoinPool instance;
- public ObjectPool<GameObject> coinPool;
- private void Awake()
- {
- coinPool = new ObjectPool<GameObject>(CreateFunc,ActionOnGet,ActionOnRelease,ActionOnDestroy,true,10,1000);
- instance = this;
- }
- private void ActionOnDestroy(GameObject obj)
- {
- Destroy(obj);
- }
- private void ActionOnRelease(GameObject obj)
- {
- obj.SetActive(false);
- }
- private void ActionOnGet(GameObject obj)
- {
- obj.SetActive(true);
- }
- private GameObject CreateFunc()
- {
- var obj=Instantiate(coin,transform);
- return obj;
- }
-
- }
复制代码- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using TMPro;
- public class Spawn : MonoBehaviour
- {
- public Transform spawnTrans;
- public float spawnInterval = 2;
- public float spawnTimer;
- public float minX = -10;
- public float maxX = 10;
- public Canvas _canvas;
- private TMP_Text countActive;
- private TMP_Text countAll;
- private TMP_Text countInActive;
- private void Start()
- {
- countActive = _canvas.transform.Find("t1/countActive").GetComponent<TMP_Text>();
- if (countActive==null)
- {
- print("countActive为空了");
- }
- countAll = _canvas.transform.Find("t2/countAll").GetComponent<TMP_Text>();
- countInActive = _canvas.transform.Find("t3/countInActive").GetComponent<TMP_Text>();
- }
- // Start is called before the first frame update
- private void Update()
- {
- spawnTimer += Time.deltaTime;
- if (spawnTimer >= spawnInterval)
- {
- spawnTimer -= spawnInterval;
- SpawnCopin();
- }
- countActive.text = CoinPool.instance.coinPool.CountActive.ToString();
- countAll.text= CoinPool.instance.coinPool.CountAll.ToString();
- countInActive.text= CoinPool.instance.coinPool.CountInactive.ToString();
- }
- public void SpawnCopin()
- {
- spawnTrans.position = new Vector3(Random.Range(minX, maxX), spawnTrans.position.y, spawnTrans.position.z);
- GameObject temp = CoinPool.instance.coinPool.Get();
- temp.transform.position = spawnTrans.position;
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|