- Home /
Problem with messenger extended
I am not sure, if it is correct to ask about the error with it here, but...
I get this error:
NullReferenceException Enemy.OnAttackReceived (Int32 Damage, Single Attack_Range, Single Attack_Spread) (at Assets/!Enemy/Enemy.cs:31) Messenger`3[System.Int32,System.Single,System.Single].Broadcast (System.String eventType, Int32 arg1, Single arg2, Single arg3, MessengerMode mode) (at Assets/_Scripts/_MessengerExtended/Messenger.cs .cs:212) Messenger`3[System.Int32,System.Single,System.Single].Broadcast (System.String eventType, Int32 arg1, Single arg2, Single arg3) (at Assets/_Scripts/_MessengerExtended/Messenger.cs .cs:203) Weapon_Meele_Default_Script.Attack () (at Assets/!Weapon/Weapon_Meele_Default_Script.cs:46) Weapon_Meele_Default_Script.Update () (at Assets/!Weapon/Weapon_Meele_Default_Script.cs:29)
With these two scripts: 1)
using UnityEngine;
using System.Collections;
public class Weapon_Meele_Default_Script : MonoBehaviour
{
public int Damage;
public float Attack_Cooldown;
public float Attack_Range;
public float Attack_Spread;
public GameObject WhatToDrop;
private float Timer;
void Update ()
{
if (Input.GetMouseButton (0))
{Attack ();
print ("Attack function launched");}
while(Timer>0)
Timer -= Time.deltaTime;
if(Timer<0)
Timer=0;
}
public void Attack()
{
Messenger<int, float, float>.Broadcast("AttackPlayer", Damage, Attack_Range, Attack_Spread);
Timer = Attack_Cooldown;
print ("We attacked");
}
}
**2)**
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour
{
public int MaxHealth = 100;
public int CurHealth = 100;
public GameObject Player;
private Transform TEXTMESH;
void Start ()
{
Messenger<int, float, float>.AddListener("AttackPlayer", OnAttackReceived);
Player = GameObject.Find("Player");
TEXTMESH = transform.Find("Health_Text");
TEXTMESH.GetComponent<TextMesh>().text = (CurHealth.ToString() + "/" + MaxHealth.ToString());
}
public void OnAttackReceived (int Damage, float Attack_Range, float Attack_Spread)
{
float distance = Vector3.Distance (Player.transform.position, transform.position);
Vector3 dir = (transform.position - Player.transform.position).normalized;
float direction = Vector3.Dot(dir, Player.transform.forward);
Debug.Log (direction);
Debug.Log (distance);
if (distance < Attack_Range)
{ if(direction>Attack_Spread)
{
HealthAdjustment(Damage);
}
}
}
public void HealthAdjustment (int adj)
{
CurHealth += adj;
TEXTMESH.GetComponent<TextMesh>().text = (CurHealth.ToString() + "/" + MaxHealth.ToString());
print("Enemy got hurt");
if(CurHealth < 0)
CurHealth = 0;
if(CurHealth>MaxHealth)
CurHealth=MaxHealth;
if(MaxHealth<1)
MaxHealth=1;
}
}
Problem is, I can not decypher what this error means.
Emmm... something wrong with the formatting. When I press edit, it shows everything in correct format, with code as it should be, but when I submit it, it looks like this. Sorry.
Ok, try to format your code again. Add some space between your code and your text. Then select your code and hit the 101010 button until it shows up correctly in the preview.
Thank you , I solved the issue already(ins$$anonymous$$d of transmitting three separate pieces of data, I just use Vector3 with my data as coordinates.)