- Home /
preprocessor directives giving either error or warning
I've never really had a cause to use these before, so I may be missing something really simple. Hopefully I won't be too embarrassed!
// This will not compile because FileLocation is already defined.
#if UNITY_EDITOR
private static string FileLocation { get { return Application.dataPath; } }
#endif
#if UNITY_STANDALONE
private static string FileLocation { get { return Application.persistentDataPath; } }
#endif
// meanwhile, this gives an unreachable code warning on the latter return(s)
private static string FileLocation {
get {
#if UNITY_EDITOR
return Application.dataPath;
#endif
#if UNITY_STANDALONE
return Application.persistentDataPath;
#endif
return Application.persistentDataPath;
}
}
Can someone who knows what they're doing tell suggest a warning-free approach to getting this behavior? And, since this is new territory for me, double-check my assumption that this is a cross-platform ironclad way to grab my game's safe "save" directory?
As a bonus, how about the code below for cross-platform path composition? This okay too?
public static char DSep { get { return System.IO.Path.DirectorySeparatorChar; } }
Big thanks for any assistance,
Answer by Eric5h5 · Jul 24, 2015 at 01:54 AM
UNITY_EDITOR and UNITY_STANDALONE aren't mutually exclusive. If you have the publishing platform switched to standalone, then both are true in the editor. Use #else instead of a second #if.
Your answer
Follow this Question
Related Questions
Possible to "or" two preprocessor directives together? 1 Answer
app with with multiple independent games 0 Answers
preprocessor directivities with JavaScript 2 Answers
What does UNITY5_SCRIPTING_IN_UNITY4 mean? 1 Answer
Can I create a global function/variable without a class in c#, or to skip reference to it? 1 Answer