How to check if code is running in Unity on any platform
I am writing a C# library that can be used in Unity or any generic mono/.NET application. I would like some of the code to behave differently depending on whether it's running in a Unity context or something else.
Looking at the available #define flags in the Unity Manual, it looks like there isn't one single #define that covers all platforms. The listing for UNITY_STANDALONE reads
#define directive for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
Which implies to me that the only way to get full coverage would be
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WII || UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID || UNITY_PS4 || UNITY_XBOXONE || UNITY_TIZEN || UNITY_TVOS || UNITY_WSA || UNITY_WEBGL || UNITY_FACEBOOK
Is there a better way to detect if the code is running in Unity?
c# unity3d
|
show 3 more comments
I am writing a C# library that can be used in Unity or any generic mono/.NET application. I would like some of the code to behave differently depending on whether it's running in a Unity context or something else.
Looking at the available #define flags in the Unity Manual, it looks like there isn't one single #define that covers all platforms. The listing for UNITY_STANDALONE reads
#define directive for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
Which implies to me that the only way to get full coverage would be
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WII || UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID || UNITY_PS4 || UNITY_XBOXONE || UNITY_TIZEN || UNITY_TVOS || UNITY_WSA || UNITY_WEBGL || UNITY_FACEBOOK
Is there a better way to detect if the code is running in Unity?
c# unity3d
1
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50
|
show 3 more comments
I am writing a C# library that can be used in Unity or any generic mono/.NET application. I would like some of the code to behave differently depending on whether it's running in a Unity context or something else.
Looking at the available #define flags in the Unity Manual, it looks like there isn't one single #define that covers all platforms. The listing for UNITY_STANDALONE reads
#define directive for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
Which implies to me that the only way to get full coverage would be
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WII || UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID || UNITY_PS4 || UNITY_XBOXONE || UNITY_TIZEN || UNITY_TVOS || UNITY_WSA || UNITY_WEBGL || UNITY_FACEBOOK
Is there a better way to detect if the code is running in Unity?
c# unity3d
I am writing a C# library that can be used in Unity or any generic mono/.NET application. I would like some of the code to behave differently depending on whether it's running in a Unity context or something else.
Looking at the available #define flags in the Unity Manual, it looks like there isn't one single #define that covers all platforms. The listing for UNITY_STANDALONE reads
#define directive for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
Which implies to me that the only way to get full coverage would be
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WII || UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID || UNITY_PS4 || UNITY_XBOXONE || UNITY_TIZEN || UNITY_TVOS || UNITY_WSA || UNITY_WEBGL || UNITY_FACEBOOK
Is there a better way to detect if the code is running in Unity?
c# unity3d
c# unity3d
asked Nov 13 '18 at 13:04
SossisosSossisos
7612410
7612410
1
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50
|
show 3 more comments
1
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50
1
1
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50
|
show 3 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281639%2fhow-to-check-if-code-is-running-in-unity-on-any-platform%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53281639%2fhow-to-check-if-code-is-running-in-unity-on-any-platform%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I'd usually suggest reversing the concept - let the consumer tell you what behaviour it wants, rather than trying to divine it.
– Damien_The_Unbeliever
Nov 13 '18 at 13:11
I would use UNITY_5_OR_NEWER. shrug
– Retired Ninja
Nov 13 '18 at 13:30
@Damien_The_Unbeliever That is a good thing to keep in mind for sure
– Sossisos
Nov 13 '18 at 13:39
@RetiredNinja Do you know of any documentation for that #define? I can't find it in the Unity manual
– Sossisos
Nov 13 '18 at 13:40
@Damien_The_Unbeliever I should give a more verbose response: It is a good thing to keep in mind, so that I don't force my assumptions onto the user, but there are many dependencies I can't get to outside of the Unity context, and have to hide under an #if so that the library will compile with msbuild or mono as well.
– Sossisos
Nov 13 '18 at 13:50