UnityEngine.Networking и EventTrigger проблема - PullRequest
0 голосов
/ 28 марта 2019

У меня есть многопользовательская 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] или как я могу заменить этот тип функции?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...