C# 入门(18) 预处理指令(perprocessor directive)、Unity平台选择

C#参考篇 第10部分 C#预处理指令 第10部分 C#预处理指令 编译器是一种翻译程序,用于将源语言程序翻译为目标语言程序, 源语言程序:表示某程序设计语言写成的,C#,C++,java等 目标语言程序:二进制数表示的伪机器代码写的程序。 编译器没有单独的预处理器,但本节中所述指令的处理方式与有预处理器时一样。 这些指令用于帮助条件编译。 预处理指令可以让代码还没有编译之前就可以进行一些预处理判断,在Unity中会用来进行一些平台或者版本的判断,决定不同的版本或者不同的平台使用不同的代码逻辑。 10.1 #ifelife 阅读详情

C#的预处理指令

参考书籍: 《C#图解教程》

  在C++里面一般一个源文件就要一个#ifdef,因为要避免重定义,C#就不用这东西了,直接用命名空间这省事。

预处理指令

  • #define,允许重定义。
  • #define 和 #undef 指令只能放在源文件第一行。

  比较好用的就是#region和#endregion,可以用来折叠代码用。


  在Unity中,用于多平台控制输入常用#if,#else,#elif,#endif,这四个组合使用。如

#if UNITY_STANDALONE 

    //单机时输入
    horizontal = (int)Input.GetAxisRaw("Horizontal");
    vertical = (int)Input.GetAxisRaw("Vertical");

#elif UNITY_IOS || UNITY_ANDROID

    //ios或安卓输入
    Input.touches[0];  //获取第一个触摸。
    //省略操作。

#endif

  但更建议使用[System.Diagnostics.Conditional]特性,该特性只能用于返回void类型。生成IL(公共中间语言)比#if更效率。
  

//需要该命名空间。
using System.Diagnostics;

//声明定义。
[Conditional("UNITY_STANDALONE")]
void getHorizontalAndVerticalFromStandalone(ref int horizontal,ref int vertical)
{
    horizontal = (int)Input.GetAxisRaw("Horizontal");
    vertical = (int)Input.GetAxisRaw("Vertical");
}

//IOS或Android
[Conditional("UNITY_IOS"),Conditional("UNITY_ANDROID")]
void getHorizontalAndVerticalFromMobile(ref int horizontal,ref int vertical)
{
    Input.touches[0];
    //省略操作。
}




//
//控制输入类中
//

//直接调用,如果是单机,第二个方法不会执行。
getHorizontalAndVerticalFromStandalone(ref horizontal,ref vertical);
getHorizontalAndVerticalFromMobile(ref horizontal,ref vertical);
《C语言入门经典》读后感(一) 本人为大学生,大一学完C语言,颇有感触 阅读详情

相关推荐

Unity源码级优化:IL织入、Native桥接与内存重排实战

Unity引擎在中大型项目中常遭遇性能瓶颈,其根本原因往往不在C#代码层面,而在于底层运行时(如Mono GC)、Job System调度机制及AssetBundle序列化等核心模块的设计约束。理解托管堆分配原理、Job Handle状态机、二进制元数据解析流程,是突破‘表面优化’天花板的前提。通过IL织入实现无侵入式API增强、Native Plugin直连绕过P/Invoke开销、内存布局重排提升CPU缓存命中率,可显著降低GC Alloc、主线程阻塞与加载延迟。这些技术尤其适用于已进入深度定制阶段的M

weixin_32382335的博客 554

unity C#预处理器指令

预处理器指令(preprocessor directive)告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。C#预处理器指令还可以告诉C#编辑器有关代码组织的信息。 样式 #if UNITY_EDITOR || UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY return Scaling.Con

kaixindragon的专栏 831

C# 宏定义 define 预处理器指令

Unity系统原来已经帮你定义好了很多的宏,可以直接用 //如果你的平台已经被你switch platform 你的那个平台过后,对应的输出打印是彩色的会编译,否则是灰色的不会编译 #if UNITY_IPHONE Debug.Log("UNITY_IPHONE"); #elif UNITY_ANDROID Debug.Log("UNITY_ANDROID"); #elif UNITY_EDITOR Debug.Log("UNI...

Peter的博客 3424

unity里的出现expected是发生了什么错误呢,求解求解

unity里的出现expected是发生了什么错误呢,求解求解

weixin_60167118的博客 1957

【从零开始入门unity游戏开发之——C#篇38】C#预处理器指令

C#预处理器指令

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1947

c语言版数据结构课程设计 学生成绩管理系统

此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加学生信息等等功能。一共15项。   代码如下: // shujujiegou.cpp : 定义控制台应用程序的入口点。///**本程序采用数组链表形式,原因:数组查询速度快,数组也能实现动态存储

Java 1万+

unity的C#学习——预处理指令、异常处理和文件的输入输出

文中首先介绍了C# 中的预处理指令,它是用来指示编译器在编译代码之前执行一些预处理操作的特殊指令。预处理指令以井号 # 开始,并且必须出现在代码的最外层,不能包含在方法或类的内部。 接着介绍了C# 中什么是异常,以及如何捕获并处理异常、主动抛出异常、自定义异常类。 最后介绍了文件相关的操作,包括对一般文件的读写和二进制文件的读写。同时还介绍了如何获取文件本身和文件目录的相关信息(调用属性),并进行各种操作(调用方法)。

时生的博客 3589

深度学习中的编码器-解码器架构

解码的作用:转换为人类可理解的形式,解码器的任务是将编码器生成的中间表示(上下文向量)转换回人类可理解的输出形式(如翻译后的文本、生成的图像描述等)。解码器通过逐步生成输出序列,使得最终的输出符合人类的理解和需求。编码的作用:转换为机器可理解的形式,编码器将输入数据(如文本、图像等)转换为一种机器更容易处理和理解的形式,即上下文向量或编码。在深度学习中,编码器(Encoder)解码器(Decoder)是常见的神经网络架构,通常用于处理序列到序列(seq2seq)任务,如机器翻译、文本摘要和图像描述等。

xxk1323的博客 1093

【Unity】Unity C#基础(十一)预处理指令

预处理指令 更多内容请查看总目录【Unity】Unity学习笔记目录整理

一个普普通通的游戏开发者 3650

永磁同步电机ADRC控制策略优化:从理论到Simulink仿真实践

本文深入探讨了永磁同步电机自抗扰控制(ADRC)策略的优化与实践。针对传统PID在动态响应、抗扰及噪声抑制方面的不足,详细解析了ADRC三大核心组件——跟踪微分器(TD)、扩张状态观测器(ESO)与非线性状态误差反馈(NLSEF)的工作原理。通过手把手的Simulink仿真教程,展示了从算法编写、模型搭建到参数整定的完整流程,并进阶实现了位置-速度双环ADRC协同控制,为高性能电机伺服系统设计提供了从理论到实践的清晰指南。

root9的博客 412

SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase

随着去“IOE”化的潮流,近些年来,许多与国家相关的项目不约而同到地往”国产化“方向靠拢,不可避免地,一些项目可能需要进行数据库迁移。

4623

求救这个代码哪里写错了??unity报错error CS1002: ; expected

using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Types; using UnityEngine.Networking.Match; using System.Collections.Generic; public class HostGame : MonoBehaviour { List ...

weixin_44315826的博客 5975

蓝桥杯嵌入式(基础教程)STM32G431RBT6——创建工程以及点灯

首先选择正确的芯片类型:STM32G431RBT6工程的创建主要有配置时钟以及烧录的方式。在配置好之后需要对时钟进行配置,由于蓝桥杯的外部晶振是24MHz因此需要对时钟树进行相应的配置。第一步先点击时钟配置之后就可以对时钟进行相应的配置了最后一步,需要对工程起一个名字,并且要选择KEIL做为其相应的软件之后再需要再生成代码那里进行相应的控制。当然这样根据生成的工程不能直接使用会有一个报错,所以需要添加一个启动文件。这个启动文件可以在官方的LCD文件夹下复制到自己的工程中。

m0_74051113的博客 1093

mexHelloWorld.c(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline

<br />解决此warning的办法是#include语句后不加分号<br /> <br />#include "mex.h"    %注意语句后没有分号哦~

maodou00的专栏 1万+

热更新方案 HybridCLR 学习教程 |(一)原理及准备工作

前面文章介绍了热更新相关的知识,包括使用xLua实现热更新实战等 那本文就来介绍一下 热更新方案 HybridCLR(代号wolong,原huatuo)和基本使用方法。 若是想了解更多关于HybridCLR的东西也可以去 官网 详细查阅。

努力前行,总会成为自己心中的那道光 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# preprocessor Directives

http://blog.renren.com/share/263553722/1863762275 所谓的预处理指令,就是用来控制编译器工作的一些指令。 比如说使用预处理指令来禁止编译器编译代码的某一部分。 所有的C#又处理指令都是以符号#开头的。...

weixin_34341117的博客 204

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Unity中常用的C#语法,简洁实用

以上这些是 C# 中常用的一些基本语法和代码模板,希望可以对你有所帮助。如果你想深入学习 C# 编程,可以参考相关书籍或网络教程,这将有助于你更好地理解和应用 C# 语言。在 Unity 中,C# 是一种非常重要的编程语言,你需要掌握一些基本的 C# 编程概念和语法才能编写游戏逻辑和交互代码。

sinat_24707741的博客 1077

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Unity IL代码注入(基础)

一、什么是代码注入 C#程序编译生成中间代码IL,为了实现问题修复和一些通用功能扩展,通常所使用的就是代码注入。 xlua的热修复方案即采用了代码注入的方式,没有污染C#代码,也不需要提前埋点,十分方便。 再比如这篇文章讲述了使用代码注入来做一些工具,:自动注入代码统计每个函数的执行效率以及内存分配 方案 代码注入需要借助一个注入工具,就是Mono.Cecil开发包,它可以让我们对编译好的程序集进行IL代码注入。 http://www.mono-project.com/docs/tools+li

mozhi 3620

Unity 预处理命令

我们经常在代码里面写Debug.Log()调试代码,游戏后门代码.这些代码在发布时无意义的,我们就需要慢慢的删除掉它们(很痛苦),有什么办法让它们在编译的时候并不加入编译代码中呢? 预处理命令..比如游戏准备发布电脑和安卓分别控制角色鼠标移动,双手控制移动并不需要复制两份项目分别开发,可以使用预处理命令进行分开编程! 下面介绍几个常用的预处理命令: UNITY_EDITOR 只在编辑器...

weixin_30600503的博客 637

深度学习 | TensorFlow 2.x 和 1.x 限制显存(超详细)

深度学习 | TensorFlow 2.x 和 1.x 限制显存(超详细)部署深度学习服务的时候,往往不是让其吃满一整张卡,而且有时候会出现致命的 OOM (Out of Memory)错误,这就需要适当限制下显存,下面介绍下如何使用代码限制显存。

HinGwenWoong的博客 8033

C# 预处理指令

概念          预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含...

july_unity的博客 1632

unity平台的预处理

在开发中,特别是unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版......。在此不同的平台上,有可能我们须要做不同的操作。然而我们就能够用unity的自带的平台宏定义方式来做平台的推断。Unity帮我们定义了例如以下平台预处理:  名称  描写叙述 UNITY_EDITOR Define for call

oSKyTonight的专栏 3万+

[C#] region 指令 (region directive)

代码中看到: #region init variable c_setting_info_group g_setting_info_group = new c_setting_info_group(); c_sfis_interface g_sfis_api = new c_sfis_interface(); private string[] mStrArray = new string[2];...

学习笔记 1089

Unity基础之C#进阶篇笔记8:预处理器指令

Unity基础之C#进阶篇笔记8:预处理器指令预处理器指令1.什么是编译器2.什么是预处理器指令3.常见的预处理器指令4.总结5.练习题 预处理器指令 1.什么是编译器 编译器是一种翻译程序 它用于将源语言程序翻译为目标语言程序 源语言程序:某种程序设计语言写成的,比如C#、C、C++、Java等语言写的程序 目标语言程序:二进制数表示的伪机器代码写的程序 2.什么是预处理器指令 预处理器指令 指导编译器 在实际编译开始之前

qq_42481369的博客 1034
上一篇: C# 入门(17) 异常(Exception)
下一篇: C# 入门(19) 反射(reflection)和特性(attribute)
ChiLi_Lin
博客等级 码龄12年 760粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值