Sorry, but this is horrible.
You are demonstrating a pattern for global access (which should not be used in the first place), by wrapping an existing language feature for global access (statics) with the sole purpose of making it NO LONGER thread safe.
Your claim that statics are NOT lazy is just wrong. Static field initializers are by default lazy, only created when the field is first accessed. And they are protected against race conditions, preventing the instantiation of more than one object when multiple threads are accessing at the same time, which your completely pointless wrapping pattern is not.
What you are suggesting might be a good feature for other languages (if you insist on ignoring the fact that globals are evil), but this is a Unity tutorial. So please remove this.