Unity功能——宏定义的使用

Posted ۓ明哲ڪ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity功能——宏定义的使用相关的知识,希望对你有一定的参考价值。

声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。


Unity功能——宏定义的使用


文章目录


一.开发环境

Unity 版本无限制
VS 版本无限制


二.问题描述

仅在对应平台(PC/android/ios等)运行对应代码


三.宏的使用原理及代码格式.

实现原理:

添加对应宏定义,达到定义内代码在对应平台运行.

对应代码:

在函数(方法)内使用# if +对应宏为开头,以 #endif为结尾,可以使用elif /else等.

#if UNITY_EDITOR
    Debug.Log("Editor");
 
#elif UNITY_STANDALONE
    Debug.Log("UNITY_STANDLONE");
 
#elif UNITY_ANDROID||UNITYIOS
    Debug.Log("UNITY_ANDROID||UNITY_IOS");
 
#endif
   Debug.Log("DoubleTap");

如图一所示.


图一

四.系统自带的宏关键词

Define功能
UNITY_EDITORScripting symbol to call Unity Editor scripts from your game code.
UNITY_EDITOR_WINScripting symbol for Editor code on Windows.
UNITY_EDITOR_OSXScripting symbol for Editor code on Mac OS X.
UNITY_EDITOR_LINUXScripting symbol for Editor code on Linux.
UNITY_STANDALONE_OSXScripting symbol to compile or execute code specifically for Mac OS X (including Universal, PPC and Intel architectures).
UNITY_STANDALONE_WINScripting symbol for compiling/executing code specifically for Windows standalone applications.
UNITY_STANDALONE_LINUXScripting symbol for compiling/executing code specifically for Linux standalone applications.
UNITY_STANDALONEScripting symbol for compiling/executing code for any standalone platform (Mac OS X, Windows or Linux).
UNITY_WIIScripting symbol for compiling/executing code for the Wii console.
UNITY_IOSScripting symbol for compiling/executing code for the iOS platform.
UNITY_IPHONE已弃用。改用 UNITY_IOS。
UNITY_ANDROIDScripting symbol for the Android platform.
UNITY_LUMINScripting symbol for the Magic Leap OS platform. You can also use PLATFORM_LUMIN.
UNITY_TIZENScripting symbol for the Tizen platform.
UNITY_TVOSScripting symbol for the Apple TV platform.
UNITY_WSAScripting symbol for Universal Windows Platform. Additionally, NETFX_CORE is defined when compiling C# files against .NET Core and using .NET scripting backend.
UNITY_WSA_10_0Scripting symbol for Universal Windows Platform. Additionally WINDOWS_UWP is defined when compiling C# files against .NET Core.
UNITY_WEBGLScripting symbol for WebGL.
UNITY_FACEBOOKScripting symbol for the Facebook platform (WebGL or Windows standalone).
UNITY_ANALYTICSScripting symbol for calling Unity Analytics methods from your game code. Version 5.2 and above.
UNITY_ASSERTIONSScripting symbol for assertions control process.
UNITY_64Scripting symbol for 64-bit platforms.

4.1中文版本(机翻):

五.自定义宏

除了默认的宏定义外,可以通过Unity自定义宏

5.1 Unity中自定义宏操作:

BuildSettings(Ctrl+Shift+B)——PlayerSettings——OtherSettings——Scripting Define Symbols
多个宏定义用 ; (分号)隔开;

注意事项:打包(构建)测试时,如果使用了测试才用的自定义宏,正版发布版本别忘了取消.

六.总结

保持饥饿,保持愚蠢.
这世界唯一能够相信的就是你付出的努力和你走过的路.

七.官网文档链接

宏定义官方文档链接
https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

Unity多平台自定义宏和Scripting Define Symbols的使用

API地址:http://docs.unity3d.com/Documentation/Manual/PlatformDependentCompilation.html

平台定义

UNITY_EDITOR 编辑器调用。

UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义。

UNITY_DASHBOARD_WIDGET Mac OS Dashboard widget (Mac OS仪表板小部件)。

UNITY_STANDALONE_WIN Windows 操作系统

UNITY_STANDALONE_LINUX Linux的独立的应用程序。

UNITY_STANDALONE 独立的平台(Mac,Windows或Linux)。

UNITY_WEBPLAYER 网页播放器(包括Windows和Mac Web播放器可执行文件)。

UNITY_WII Wii游戏机平台。

UNITY_IPHONE iPhone平台。

UNITY_ANDROID Android平台。

UNITY_PS3 PlayStation 3。

UNITY_XBOX360 Xbox 360。

UNITY_NACL 谷歌原生客户端(使用这个必须另外使用UNITY_WEBPLAYER)。

UNITY_FLASH Adobe Flash



先给大家介绍两个常用到的宏 1.#region  直接上代码演示 [C#]  纯文本查看  复制代码 ?
  01 02 03 04 05 06 07 08 09 10 11 12 13 14 using UnityEngine; using System.Collections;   public class Test : MonoBehaviour           #region 收缩自如        int index = 0;      void MyFun()                            #endregion

那region宏加上后是什么效果呢?我们来点下#region左边增加的 “—”号。

看到效果了把!很多行代码收缩在一行,并只显示了自己的注释。region宏可以让我们很轻松的去整理代码。 2.#if UNITY_   根据运行设备来选择性执行某块代码。 [C#]  纯文本查看  复制代码 ?
  1 2 3 4 5 6 #if UNITY_IPHONE          Debug.Log( "UNITY_IPHONE" ); #elif UNITY_ANDROID          Debug.Log( "UNITY_ANDROID" ); #elif UNITY_EDITOR          Debug.Log( "UNITY_EDITOR" ); #endif

这里区分了 iphone、安卓和编辑器三个平台,当然还有更多平台。 这个在做移动端时会经常用到。
介绍完Unity自带的宏后,我们来学习一下如何去自定义宏。 一、首先我们先了解一下自定义宏的作用 其实是类似于上面刚介绍的第二个宏,但我们不是区分平台,而是根据自己的定义去区分。啥叫根据自己定义区分那?按步骤操作完你就明白了。 二、比如我们先新建宏,宏的名称根据自己情况定,这里我们根据区分发布版本来定义宏,分别为“RELEASE”和“DEVELOP” 也就是我们想在开发模式下 去执行DEVELOP下的内容;在想要正式发布时 去执行RELEASE下的内容。 三、那么我们就可以这样来写: [C#]  纯文本查看  复制代码 ?
  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 using UnityEngine; using System.Collections;    public class Test : MonoBehaviour         string url = string .Empty;  // 服务器地址         void Start()              #if DEVELOP          url = "dev.s.taobao.com" ;      #elif RELEASE          使用Photon引擎进行unity网络游戏开发

iOS Unity3D游戏引擎入门②

unity3d是干啥用的,除了做游戏还能干啥?

使用Photon引擎进行unity网络游戏开发——Photon常用类介绍

unity代码中写了speed不显示

什么是unity3d?

(c)2006-2024 SYSTEM All Rights Reserved IT常识