unable to pass parameters to a C# script (no GameObject)
Alright, hi all. I'm pretty new to Unity and I think I'm missing something... The problem is that I cannot access to a method on another script (which isn't attached to any gameObject) because everytime i try to, while playing the simulation, the "NullRefereceException" error appears...
What I'm trying to do is to cast a spell: a fireball prefab (just some particle effects) put in the Resources directory, has to be instantiated and then it should move to the target position.. the caster is the player which has the "CharacterSpellCast" script attached, the target is the gameObject i click.
Here there are the codes:
Casting spells script
public class CharacterSpellCast : MonoBehaviour {
public GameObject Player;
private RaycastHit hit;
private Transform target;
Fireball fireball;
void Start () {
fireball = FindObjectOfType(typeof(Fireball)) as Fireball;
Player=this.gameObject;
}
void Update () {
if(Input.GetMouseButtonDown(0)){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray,out hit)&& hit.transform.gameObject!=this.gameObject){
target=hit.transform;
print (target.name);
fireball.Cast(target,Player.transform);
}
}
}
}
Fireball Script
public class Fireball : MonoBehaviour {
private Vector3 velocity = Vector3.forward;
public void Cast (Transform Target,Transform Caster) {
print("into");
//GameObject fireball=GameObject.Find("Fireball");
GameObject fireball = Resources.Load("Fireball") as GameObject;
float time=0.5f*Time.deltaTime;
if(fireball!=null){
GameObject Spell = Instantiate(fireball);
print ("into if");
Spell.transform.position= Vector3.SmoothDamp(Caster.position,Target.position,ref velocity,time);
}
else
print("null");
}
}
The problem seems to be on fireball.Cast(target,Player.transform);
but I'm not figuring how to deal with it... thanks for the help.
if you haven't attached the script to GameObject
then it won't be found on line 10, so you will get a null reference exception.
you need to either Instantiate
a GameObject
with that script attached or use AddComponent()
to add it..
FAQ :
Some reasons for getting a post rejected:
Asking us to fix your code: more than likely, you simply need to get a better understanding of basic program$$anonymous$$g. Having a look at the Scripting tutorials on the Learn page will help you become more familiar with scripting in Unity
Posting about a specific compiling error or NullReferenceException: there is a myriad of these questions with answers already, have a look at those posts to get hints on what could possibly be your issue
Answer by LeftyRighty · Apr 25, 2016 at 01:25 PM
fireball = FindObjectOfType(typeof(Fireball)) as Fireball;
FindObjectOfType looks in the current scene, it's not going to find anything you haven't already instantiated
a fireball prefab (just some particle effects) put in the Resources directory
Overall it sounds like you should be using resources.load to find the fireball from the resources folder http://docs.unity3d.com/ScriptReference/Resources.Load.html
Your answer
Follow this Question
Related Questions
Car from Unity's standard assets giving me of null reference errors 0 Answers
NullReferenceException after loading a new scene ? 0 Answers
NullReferenceException: Object reference not set to an instance of an object, again 2 Answers
SetParent after Instantiate. NullReferenceException error 1 Answer
Having troubles using List 1 Answer