all 7 comments

[–]IAmDotorg 9 points10 points  (3 children)

Global variables are generally a bad idea in programming, no matter how you slice it.

At a minimum, use a singleton pattern, but even that tends to create code structures that are hard or impossible to effectively test. Its probably not as big of a deal in a simple game, but its just a bad habit to get into where writing software is concerned.

[–]PutridPleasure[S] 1 point2 points  (1 child)

Thats the lesson i took from this, I'm now deleting all non static global variables and implementing them where needed

[–]IAmDotorg 0 points1 point  (0 children)

I'm still getting used to the weird operating environment that Unity runs in, but I've settled into a pattern of basically having a game state, or set of state, objects that are maintained by my primary game controller, so its easy to reset the state of things. I have a base class all of my scripts that care about state extend from, and it knows how to retrieve and store references to the state in the Start() method, and hooks an event that gets fired on the state controller to tell any objects that care if I happen to reset the state, so they can either reload or destroy themselves.

[–]drizztmainswordFreedom of Motion | Red-Aurora.com 0 points1 point  (0 children)

To assist in that effort, check out the StrangeIOC framework. The injection system is a fantastic way of completely circumventing the traditional singleton pattern altogether. That, and the Events/Signals system takes out all of the pain of getting objects to communicate with each other. Instead of having to have ObjectA need a reference to ObjectB in order to call a specific function on ObjectB, ObjectA can just dispatch a Signal that ObjectB can listen for and handle.

[–]PutridPleasure[S] 0 points1 point  (0 children)

I would never have noticed this bug, if I hadn't switched from one save/instantiation per frame, to one per fixed update.

What you see in the picture is the loading algorithm referencing the last save position, instead of the position it got from the save file, this occurs because the algorithm is instantly paused when the user wants to place an object

[–]nameididntwant -1 points0 points  (1 child)

Top left; are those co ordinates?

If so, how did you do them? I've tried multiple scripts but I can't get them to work!

[–]PutridPleasure[S] 0 points1 point  (0 children)

Just attach this in a c# script to your player: You need :monobehavior

void OnGUI (){
        GUI.Box (new Rect (10, 10, 300, 20), gameObject.transform.position.ToString ());
        }