During the development of my up and coming game I have encountered some snags when developing in Unity so I wrote a number of utilities and extension methods to help out.
One such annoyance is the inability to use interfaces in GetComponent() and GetComponents(), so I wrote some extension methods to help with that:
[code lang="csharp"] using UnityHelpers;
var obj = new GameObject();
obj.AddComponent
obj.Has
obj.Get
obj.GetAll
Another utility is for adding children to GameObjects:
[code lang="csharp"] using UnityHelpers;
var obj = new GameObject();
obj.AddChild("Mike"); // Creates a new GameObject named "Mike" and adds it as a child
var player = obj.AddChild
obj.AddChild(typeof(Player), typeof(Friendly), typeof(AI)); // Creates a new GameObject and adds a number of components [/code]
There are many other utils and extensions, and more to come.
Checkout the source for more info: https://github.com/mikecann/Unity-Helpers/tree/master/Scripts
I have rigorously unit and battle tested these utils and added them to Github so I can use them in furthur projects. I hope they can be of some use to others too!