unity基础简介(一)

本文介绍了Unity引擎如何实现跨平台,重点讲解C++和C#的编译过程。Unity使用C++作为底层核心,C#作为脚本语言,通过Mono实现跨平台,然后IL2CPP进一步优化,将IL编译为C++,提升性能。文章还提及了LLVM编译器在Unity中的作用。
摘要由CSDN通过智能技术生成

unity基础简介(一)

unity是如何跨平台的(附c++和c#编译过程)

前言

游戏引擎为了兼顾易用性和性能,往往使用一种高效率语言编写核心,使用另一种高级语言作为脚本语言,大部分游戏引擎的底层核心由c++编写,unreal使用“U++”作为脚本,unity使用c#作为脚本,当然,使用lua,javascript作为脚本也可以,笔者在学习unity时就疑心作为核心语言的c++和作为脚本语言的c#是如何在一起编译运行的,本文将大致描述关于unity的编译。

c++编译过程*

在聊unity的编译过程之前,我们先来回顾一下c++的编译过程,熟悉可跳过

直接上图
在这里插入图片描述

1.预处理(Preprocessing)

读取c源程序,对其中的伪指令(以# 开头的指令)和特殊符号进行处理。

伪指令主要包括以下四个方面:

  1. 宏定义指令,如# define Name TokenString,# undef等。

对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的 Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。

  1. 条件编译指令,如# ifdef,# ifndef,# else,# elif,# endif等。

这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。

  1. 头文件包含指令,如# include “FileName” 或者# include < FileName> 等。

预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。

  1. 特殊符号,预编译程序可以识别一些特殊的符号。

预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值