Hey everyone. So I understand C# doesn’t directly support Multi-Inheritance, though I know there are ways around it. I’ve successfully implemented multi-inheritance for 2 different classes, however I’m continually finding an issue with linking MonoBehaviour in as well.
Copied from an email asking another person:
I can link both Photon and the grid system (TMN Controller) in fine, and the script will pull inheritance from both without any problems. However, when I add MonoBehaviour (required to access things like gameObject, or Destroy), it seems as if it’s not recognizing it at all. If I make the class inherit from MonoBehaviour as normal, the errors go away, but I lose the inheritance to Photon and TMN. If I have any combination of TMN + MB or Photon + MB, it still doesn’t work, so I know the problem isn’t with having too many things linked, but rather with linking MonoBehaviour itself.
This is my code for that section:
public interface TMN { TMNController myController {get; set; }}
public interface Pho { Photon.MonoBehaviour myPhoton {get; set; }}
public interface Mon {Behaviour myMono {get; set; }}
public class gameSetUp : TMN, /*Pho,*/ Mon
{
public TMNController myController {get; set; }
public Photon.MonoBehaviour myPhoton {get; set; }
public Behaviour myMono {get; set;}
public gameSetUp() { myController = new TMNController(); myPhoton = new Photon.MonoBehaviour(); myMono = new Behaviour();}
}
public class script_SetUp : gameSetUp {
}
I have 3 errors, all referring to missing references related to MonoBehaviour. I tried linking every combination of Component, Object, GameObject, UnityEngine classes, and nothing changed the errors.
My 3 Errors are:
-
Assets/Scripts/script_SetUp.cs(71,30): error CS1061: Type
script_SetUp' does not contain a definition for
gameObject’ and no extension methodgameObject' of type
script_SetUp’ could be found (are you missing a using directive or an assembly reference?) -
Assets/Scripts/script_SetUp.cs(80,23): error CS0029: Cannot implicitly convert type
script_SetUp' to
UnityEngine.Component’ -
Assets/Scripts/script_SetUp.cs(82,22): error CS1061: Type
script_SetUp' does not contain a definition for
photonView’ and no extension methodphotonView' of type
script_SetUp’ could be found (are you missing a using directive or an assembly reference?)
The script seems to have trouble recognizing itself. It think it’s a Component, not a “script_SetUp”
The script also doesn’t show up in my inspector. Just a message saying “The associated script can not be loaded. Please fix any compile errors and assign a valid script.”
Is there some special way this needs to be handled for MonoBehaviour, is my logic wrong? I’m really not sure at all about how to go about this.
Any help would be greatly appreciated. If you need any other information, feel free to ask and I’ll provide you with what you need. Thanks