Woldspace UI Object(text) problem!! need urgent help, admins please

Options
I've been trying this for quite a while but haven't figure out anything yet. What I want to do is to instantiate or just write the taken damage to a text object under a canvas which is world space render mode. I can see this text from me but other player cannot see the text. how do we make this displayed for bot players? I'm sure there is an answer but there's no web page laft n google's first search page that I did not check out. Please somebody give me an advice asap.
so far this is what I tried
[PunRPC]
    protected void TakeDamage(float damage, DamageType damageType) //rakip ismi buraya
    {

        if (damageType ==DamageType.Physical)
        {
            float takenDamage = (damage / 1 - PhysicalDefence) * 0.1618f;
           
            string takenTemp= $"{takenDamage:00}";
            GameObject damageText = PhotonNetwork.Instantiate("DamageText",transform.position,transform.rotation);
            damageText.GetComponent<RectTransform>().SetParent(gameObject.transform.GetChild(1).transform.GetChild(0).transform);
            damageText.transform.position = gameObject.transform.GetChild(1).transform.GetChild(0).transform.position;
            damageText.GetComponent<DisplayDamage>().damage = takenTemp;
           
        }

public class DisplayDamage : MonoBehaviourPunCallbacks
{
    public string damage;
   

    
    void Update()
    {
      //  photonView.RPC("DisplayText", RpcTarget.All, damage);
        if(photonView.IsMine)
          gameObject.GetComponent<Text>().text = damage;
        else
          gameObject.GetComponent<Text>().text = damage;

    }
  /*  private void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
        if (stream.IsWriting)
        {
            stream.SendNext(gameObject.GetComponent<Text>().text);
        }
        else
        {

        }
    }*/
   /* [PunRPC]
    public void DisplayText(string text)
    {
        gameObject.GetComponent<Text>().text = text;
    }*/
}

Comments

  • L3sc
    L3sc
    edited May 2020
    Options
    public void DisplayText(float damage){
         GetComponent<Text>().text = damage.ToString();
        photonView.RPC("SyncDamage", RpcTarget.Others, damage);
    }
    
    
    [PunRPC]
    void SyncDamage(float damage){
         GetComponent<Text>().text = damage.ToString();
    }
    
    //Inside take damage func.:
    damageText.GetComponent<DisplayDamage>().DisplayText(damage);
    

    Btw why you wouldn't cache damage text? It's much easier to sync.
  • Bürküt
    Options
    L3sc wrote: »
    public void DisplayText(float damage){
         GetComponent<Text>().text = damage.ToString();
        photonView.RPC("SyncDamage", RpcTarget.Others, damage);
    }
    
    
    [PunRPC]
    void SyncDamage(float damage){
         GetComponent<Text>().text = damage.ToString();
    }
    
    //Inside take damage func.:
    damageText.GetComponent<DisplayDamage>().DisplayText(damage);
    

    Btw why you wouldn't cache damage text? It's much easier to sync.

    Now the problem is so weird, everything seem perfect from master but not client, all text looks reversed
  • L3sc
    Options
    I think reversed problem about your text spawn preferences. Check :
    GameObject damageText = PhotonNetwork.Instantiate("DamageText",transform.position,transform.rotation);
    

    or world ui canvas settings in editor. If you can share damate text picture inside game maybe I can help more. Because it's totally about your game logic.