How to check if code is running in Unity on any platform










2















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?










share|improve this question

















  • 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















2















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?










share|improve this question

















  • 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













2












2








2








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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












  • 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












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
);



);













draft saved

draft discarded


















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















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







這個網誌中的熱門文章

How to read a connectionString WITH PROVIDER in .NET Core?

Node.js Script on GitHub Pages or Amazon S3

Museum of Modern and Contemporary Art of Trento and Rovereto