/// <summary>
    /// 创建子弹
    /// </summary>
    private void CreateBullet()
    {
        if (null == m_bulletRoot)
        {
            var rootObj = new GameObject("PlayerBulletRoot");
            m_bulletRoot = rootObj.transform;
        }
        PlayerBullet bullet = null;

        if (m_reusePool.Count > 0)
        {
            // 从对象池中取出子弹重复利用
            bullet = m_reusePool.Dequeue();
            bullet.ActiveSelf(true);
        }
        else
        {
            // 对象池中没有可用的子弹,则实例化一个
            var prefab = ResourceMgr.instance.LoadRes <GameObject>("Bullet/bullet");
            var obj    = Object.Instantiate(prefab);
            obj.transform.SetParent(m_bulletRoot, false);
            bullet       = obj.GetComponent <PlayerBullet>();
            bullet.power = 1;
            bullet.speed = 7f;
            // 子弹回收
            bullet.backToPoolAction = () =>
            {
                // 塞回对象池中
                m_reusePool.Enqueue(bullet);
            };
        }
        // 设置子弹的初始位置为飞机的位置,注意加一个y轴的偏移,使子弹在飞机头的位置
        bullet.SetStartPos(m_playerTrans.position + new Vector3(0, 0.7f, 0));
    }