- Home /
class inheriting Vector3 without using monobehavior?
So.. I'm just learning programming and unity, trying to go through some of the scripts and plugins that people have written trying to figure out how they do what they do.
First problem. I open this csharp code and it start like this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class Plane
{
public Vector3 s1, a1, s2, a2;
.....
What I don't understand here is how this class is inheriting Vector3 when it's not a child of monobehavior? There are multiple script files that end up using this class, but I can't figure out how this is possible. anyone have an answer? thanks!
Hi! I dont know where you get the idea that the use of Vector3 requires a monobehaviour. The Vecto3 definition comes from the "using UnityEngine" statement.
Answer by Kryptos · Nov 13, 2012 at 09:30 AM
First of all, this class does not inherits Vector3
. In fact it doesn't inherits anything (except the base class object implicitly).
Secondly, Vector3
is not a class but a struct (a value type). And it is just used by this class.
MonoBehaviour
is the base class for all scripts. But if you need other types (for example for storing data), they don't need to inherits MonoBehaviour
.
[System.Serializable]
attribute is used here so that the class can be serialized and shown/modified in the inspector when used by another script. For example:
public class Script : MonoBehaviour
{
public Plane myPlane;
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613083802im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Use monobehavior functions in own classes 0 Answers
Abstracting class vars, accessing vars by variable 0 Answers
How to reassign a variable's class 1 Answer
Using AddComponent to add a Sub Class using a String 4 Answers
Where is the best place to host a class that is not intended to be a MonoBehaviour or Component? 1 Answer