cast is not valid???
i get this error InvalidCastException: Specified cast is not valid. Health.OnPhotonSerializeView (Photon.Pun.PhotonStream stream, Photon.Pun.PhotonMessageInfo info)
and its on line 39 the error and this is what i have
/// /// Health.cs /// Author: MutantGopher /// This is a sample health script. If you use a different script for health, /// make sure that it is called "Health". If it is not, you may need to edit code /// referencing the Health component from other scripts ///
using UnityEngine; using System.Collections; using Photon.Pun; using Photon.Realtime;
public class Health : MonoBehaviourPunCallbacks, IPunObservable { public bool canDie = true;
public float maxHealth = 100;
public float currentHealth = 100;
public bool replaceWhenDead = false;
public GameObject deadReplacement;
public bool makeExplosion = false;
public GameObject explosion;
public bool isPlayer = false;
public GameObject deathCam;
private bool dead = false;
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(currentHealth);
}
else if (stream.IsReading)
{
currentHealth = (int)stream.ReceiveNext();
}
}
void Start()
{
// Initialize the currentHealth variable to the value specified by the user in startingHealth
currentHealth = maxHealth;
}
public void ChangeHealth(float amount)
{
// Change the health by the amount specified in the amount variable
currentHealth += amount;
// If the health runs out, then Die.
if (currentHealth <= 0 && !dead && canDie)
Die();
// Make sure that the health never exceeds the maximum health
else if (currentHealth > maxHealth)
currentHealth = maxHealth;
}
IEnumerator Respawn()
{
currentHealth = 100;
GetComponentInChildren<Camera>().enabled = false;
GetComponent<Movement>().enabled = false;
GetComponentInChildren<Weapon>().enabled = false;
transform.position = new Vector3(-3, 1, 19);
yield return new WaitForSeconds(4);
GetComponentInChildren<Camera>().enabled = true;
GetComponent<Movement>().enabled = true;
GetComponentInChildren<Weapon>().enabled = true;
currentHealth = maxHealth;
dead = false;
}
public void Die()
{
// This GameObject is officially dead. This is used to make sure the Die() function isn't called again
dead = true;
// Make death effects
if (replaceWhenDead)
Instantiate(deadReplacement, transform.position, transform.rotation);
if (makeExplosion)
Instantiate(explosion, transform.position, transform.rotation);
if (isPlayer && deathCam != null)
deathCam.SetActive(true);
// Remove this GameObject from the scene
if(currentHealth <= 0)
{
StartCoroutine(Respawn());
}
}
}
and i also get this error NullReferenceException: Object reference not set to an instance of an object Health+d__13.MoveNext () (at Assets/Easy Weapons/Scripts/Health.cs:68)
Answer by Captain_Pineapple · Feb 07 at 04:36 PM
Hey,
assuming that "line 39" is
currentHealth = (int)stream.ReceiveNext();
then the answer to your question boils down to this:
stream.ReceiveNext()
returns a variable of type object
which you try to cast into an integer. The will only work if that object
really is an integer (or at least exactly 4 bytes in size). -> you probably do not send integers but something else.
given that this error as well as a nullreference is an issue for you please please consider getting some more programming experience before you start creating a multiplayer game. Multiplayer games are way way way more difficult to create and bring a lot more issues.
You will feel a lot of frustration when you continue down this path with your current knowledge.
Answer by kariemhassan2009 · Feb 08 at 12:34 AM
sorry i was dumb the health and max health are set as floats that 's why it happend when i looked into it a little bit more i found that out but still thanks
Your answer
Follow this Question
Related Questions
Unity [PUN] New Instantiated players cannot see previously instantiated players 0 Answers
Photon ThirdPersonCamera ERROR 0 Answers
WebGL Build doesn't fully load on Github Pages 0 Answers
Build errors when using Photon 2 ,Build errors after using Photon 0 Answers
PhotonMono spawns instead of player. 0 Answers