- Home /
Where is the best place to host a class that is not intended to be a MonoBehaviour or Component?
I am having trouble wrapping my head around this ordinary class versus MonoBehaviour. I understand that a MonoBehaviour is-a class and that defining a class such as public class Weapon{...}
is valid code. I also understand that MonoBehaviour enables the automatic process of function calls such as Update( ), FixedUpdate( ), etc.
However, my problem lies in where do I put that script such that the type is recognized by multiple Components.
Ex: I have two turret types
public class MountedTurret : MonoBehaviour{}
public class MovingTurret : MonoBehavior{}
Both of these I want to have an instance of class Inventory()
What I don't want to do is define two versions of Inventory.
public class MountedTurret : MonoBehaviour{
public class Inventory{}
private Inventory inventory;
}
public class MovingTurret : MonoBehavior{
public class Inventory{}
private Inventory inventory;
}
If I just define in an Inventory.cs, where do I put that script so that both my turrets can recognize that script? Is it sufficient to just sit in my project folder? Do I have to put it in some lib directory? Do I have to attach it to a GameObject?
Answer by Nachtmahr · Apr 04, 2013 at 07:16 PM
public class MountedTurret : MonoBehaviour{
public Inventory inventory;
...
}
[Serializable]
public class Inventory{
//properties ...
//Methods ...
}
With Serialization it shows up in the Inspector. Asuming you use C#.
You can also let your Inventory extend from MonoBehaviour that will do it. you can then get the Component with GetComponent(); but make sure it is on the same GameObject.
Scripts in Genral a recognized from Every location in your Asset Folder and sub Folder so put it where you want.
Thank you this solved my question, I also had to extend UnityEngine.Object but that was a different issue! Also not to forget the using System;
Your answer
Follow this Question
Related Questions
Calling a method of a class that is a part of another class? 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Tetris Unity game structure C# 3 Answers
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer