- Home /
Unity version dependent deprecation, possible?
Let's say I have a C# method I write for Unity 4.5. But with Unity 4.6 or later, my method isn't needed anymore and could be marked as deprecated. Is there a way to set the method as deprecated with only Unity 4.6 or later? This is just an example of course. If this is possible, would it be possible in both the editor and the compiler, or just the compiler? Ideally, I'd like it so that my method is listed as deprecated depending only on version of Unity being used by the user.
For something of a more concrete example of what I am looking to do, I want to make a generic version of Object.Instantiate. Unity 5 added a generic version of this, but Unity 4.6 and earlier do not have one. As I'd be writing this to target Unity 4.5 at the earliest, I would like it to only say it is deprecated with Unity 5 or later.
One of the below answers is correct in regards to providing the script to someone, as the preprocessor directives can be utilized. As a clarification, though, I want to know if this can be done when providing a pre-compiled DLL.
Answer by Baste · May 18, 2015 at 07:08 PM
You use preprocessor directives. On Unity 5, this gives me a compiler warning:
void Start() {
ObsoleteMethod();
}
#if UNITY_5_0
[Obsolete]
#endif
void ObsoleteMethod() { }
while this does not:
void Start() {
ObsoleteMethod();
}
#if UNITY_4_0
[Obsolete]
#endif
void ObsoleteMethod() { }
Remember that you can do the normal boolean operators on #if directives, as long as you put them in parentheses:
#if (UNITY_4_0 || UNITY_4_0 || ...)
And you can also define a variable with #define to use later, to save on the typing:
#if (UNITY_4_0 || UNITY_4_0 || ...)
#define OLD
#endif
#if OLD
[Obsolete]
#endif
void ObsoleteMethod() { ... }
I'm actually going to add a clarification to my question. While this is helpful for people providing the actual scripts, I had meant to ask about how this can be done if providing a pre-compiled DLL.
Your answer
Follow this Question
Related Questions
Initialising List array for use in a custom Editor 1 Answer
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Getting GUI.skin in editor script changed entire Unity Editor GUI 1 Answer
Reference a script from Editor folder 2 Answers