Website may be up and down over next few months. I'm currently doing a complete overhaul of everything. Going back to simple individual .htm pages, new overall site theme, sanitizing and cleaning up html of all pages and blog posts, attempting to implement a new tooling and publishing system etc etc.

Using EditorApplication.isPlaying & EditorApplication.isPaused you can control when you want to run or pause your game in the unity editor using scripting.

Unity provides access to the users microphone via the Microphone class.

Unity provides support for location awareness such as  longitude, latitude, and altitude in the LocationService class.

Unity provides built in support for various social platforms including support for custom implementations through the Social class.

If the device supports it you can use the Gyroscope class to get gyroscopic information about the orientation and acceleration  of the device.

You can get detailed system information by using the SystemInfo class. SystemInfo provides information on the graphic device hardware, processor count, operating system, device type and more. Very handy for gathering stats/trends on your users hardware specs.

The Unity API provides access to a OpenGL style graphics for immediate mode drawing in the class called “GL”.

You can perform Frustum and AABB collision detection using something similar to the fallowing code ...

public object[] GetObjects(Vector3 position, float distance, float fov, Vector3 direction)
            var results = new List<GameObject>();

            // search all game objects
            var objects = UnityEngine.Object.FindObjectsOfType(typeof(GameObject));

            if ( == null)
                this.cameraGameObject = new GameObject();
       = this.cameraGameObject.AddComponent<Camera>();

            this.cameraGameObject.transform.position = position;
            this.cameraGameObject.transform.forward = direction;
   = fov;
   = distance;

            var planes = GeometryUtility.CalculateFrustumPlanes(;

            foreach (GameObject obj in objects)
                if (obj == this.cameraGameObject)

                // if no collider just ignore
                if (obj.collider == null)

                if (GeometryUtility.TestPlanesAABB(planes, obj.collider.bounds))

            return results.ToArray();

You can get access to more powerful controls by using an undocumented unity api the TextEditor control.

var te = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl);
if (te != null)
    te.MoveCursorToPosition(new Vector2(5555, 5555));

If you need to know what symbols Unity uses for conditional compilation check out the docs page Platform Dependent Compilation

Created by: X

Just another personal website in this crazy online world

Name of author Dean Lunz (aka Created by: X)
Computer programming nerd, and tech geek.
About Me -- Resume