У меня есть многопользовательская 2D-игра, созданная в Unity, и я хотел поставить несколько экранных кнопок, чтобы иметь возможность управлять ею по телефону. Проблема в том, что когда я помещаю триггер события на кнопку, он использует функцию из скрипта, который должен использовать, и функции, которые вызываются внутри него, но он не может открыть функции [Command] вообще. Есть идеи, почему это происходит?
Кнопка с триггером событий выглядит следующим образом:
https://ibb.co/mBHQ9wM
Event Trigger использует функцию TouchInput - функцию ShootButton (как видно из рисунка TouchInput.Button)
Функция TouchInput выглядит следующим образом:
https://pastebin.com/TWe8Mws1
TouchInput открывает скрипт PlayerController и использует функцию «TryFireBullet ()». Важные функции выглядят так:
public void TryFireBullet()//(NetworkIdentity id)
{
Debug.Log("works");
TryFireBullet2(); // de_sters
//if (ultimul_glont == 0 || Time.time > ultimul_glont + Delay_Bullet)
//{
ultimul_glont = Time.time;
Debug.Log("works2");
//id.AssignClientAuthority();
CmdFireBullet();
//}
}
public void TryFireBullet2() // de_sters
{
Debug.Log("LEL");
}
[Command]
public void CmdFireBullet()
{
Debug.Log("works3");
GameObject bullet = Instantiate(bulletPrefab, gunTip.position, Quaternion.identity) as GameObject;
NetworkServer.Spawn(bullet);
//NetworkServer.SpawnWithClientAuthority(bullet, connectionToClient);
RpcAdaugaViteza(bullet);
}
[ClientRpc]
public void RpcAdaugaViteza(GameObject bullet)
{
Debug.Log("MERGE_ADAUGA_VITEZA");
Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
bullet.GetComponent<BulletScript>().creator = gameObject;
rb.velocity = new Vector2(bulletSpeed * Mathf.Sign(transform.localScale.x), 0f);
}
Полный код скрипта PlayerController здесь: https://pastebin.com/R0q7usY7
Когда я нажимаю кнопку, отладка показывает мне:
- "cevaShootButton"
- "работает"
- "LEL"
- "works2"
Он не входит в функцию [Command], или Отладка из этой функции не печатается, потому что она выполняется на сервере? Вероятно, первый, потому что я могу очень хорошо стрелять пулями без кнопки, используя клавишу клавиатуры, и он также печатает «works3», когда я делаю это.
Можете ли вы сказать мне, почему кнопка не может открыть функции [Command] или как я могу заменить этот тип функции?
Спасибо.