【unity进阶篇】不同Unity版本对应的C# 版本和API 兼容级别(Api Compatibility Level)选择

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
  • 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
  • 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
  • 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。

这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。

文章目录

    • 1、Unity 支持的 C# 版本
    • 2、为什么不同 Unity 版本支持不同的 C# 版本?
    • 3、不同版本的 C# 对我们有什么意义?
    • 4、Unity 的 .NET API 兼容级别
    • 5、API Compatibility Level 是什么?
    • 6、.NET Standard 2.0
    • 7、.NET Framework
    • 8、总结
  • 专栏推荐
  • 完结

1、Unity 支持的 C# 版本

随着 Unity 的不断更新,它逐渐开始支持更高版本的 C#。这意味着你可以使用更现代的编程特性来编写更加简洁、高效的代码。截至2025年,最新的 Unity 6 已经支持到了 C# 9。这里有一个简单的对照表:

  • Unity 2021.2 至 Unity 6 —— 支持 C# 9
  • Unity 2020.3 —— 支持 C# 8
  • Unity 2019.4 —— 支持 C# 7.3
  • Unity 2017 —— 支持 C# 6
  • Unity 5.5 —— 支持 C# 4

如果你想要了解更多详细信息,可以访问 Unity 官方文档。

2、为什么不同 Unity 版本支持不同的 C# 版本?

这是因为每个 Unity 版本使用的 C# 编译器脚本运行时(Scripting Runtime) 不同。例如:

  • Unity 2020.3 使用了等效于 .NET 4.6 的脚本运行时,并且采用了 Roslyn(罗斯林编译器)编译器。这使得它可以支持到 C# 8。
  • 随着 Unity 的升级,它通常会采用更新的编译器和运行时版本,从而能够支持更多新的 C# 功能。

因此,当 Unity 更新时,它一般会引入更先进的工具和技术,让你可以在开发中利用最新的语言特性。

3、不同版本的 C# 对我们有什么意义?

新版本的 C# 带来了许多有用的新特性,可以帮助你写出更清晰、更简洁的代码。虽然即使你不使用这些新功能也可以完成开发工作,但它们确实可以让代码更容易阅读和维护。例如:

  • 模式匹配:在 C# 7.0 及以上版本中引入,允许你以更直观的方式处理不同类型的数据。
  • 异步流:从 C# 8.0 开始支持,简化了对大量数据进行异步处理的过程。
  • 记录类型 (Records):这是 C# 9.0 的新增特性之一,提供了不可变的数据结构,非常适合用于表示实体或数据传输对象。

通过了解你所使用的 Unity 版本能支持哪些 C# 版本,你可以充分利用这些新特性来提高开发效率。

4、Unity 的 .NET API 兼容级别

在 Unity 中,你可以通过Playersetting->other Setting->Api Compatibility Level设置项目的 API 兼容级别,这决定了项目可以访问哪些 .NET 库。
在这里插入图片描述
当然,我会用通俗易懂的语言来解释 Unity 中的 API Compatibility Level 选项里的 .NET Standard 2.0 和 .NET Framework。

5、API Compatibility Level 是什么?

首先,API Compatibility Level 是 Unity 中的一个设置,它决定了你的项目可以使用哪些类库和功能。这有点像你选择了一个“工具箱”,这个工具箱里有不同数量和类型的工具(即代码库),你可以用来构建你的游戏或应用程序。

6、.NET Standard 2.0

想象一下:

  • 小而精的工具箱:.NET Standard 2.0 就像是一个相对较小但非常现代化的工具箱。它包含了最新版本的 C# 语言特性和一些常用的类库。
  • 跨平台支持:这个工具箱设计得非常好,可以在多个平台上工作,比如 Windows、macOS 和 Linux,甚至在移动设备上也能很好地运行。
  • 轻量级:因为这个工具箱是为多种环境设计的,所以它只包含最常用和最必要的工具,不会过于庞大或复杂。

适合谁?

  • 如果你是刚开始学习 Unity 的新手,或者希望你的项目能够轻松地移植到不同的平台(如从 PC 到移动端),那么 .NET Standard 2.0 是一个很好的选择。
  • 它也更适合那些不需要大量传统 .NET 功能的小型项目或独立开发者。

7、.NET Framework

想象一下:

  • 大而全的工具箱:.NET Framework 就像是一个更大、更传统的工具箱。它不仅有所有 .NET Standard 2.0 的东西,还有一些额外的功能和类库,这些可能是一些老项目或特定于 Windows 平台的应用所需要的。
  • Windows 特性:这个工具箱特别擅长处理 Windows 上的任务,因为它与 Windows 操作系统紧密集成,提供了更多的本地化支持和服务。
  • 全面但较重:由于它包含了更多特性,因此相对来说会更加复杂一点,并且可能会占用更多的资源。

适合谁?

  • 如果你正在开发一个需要访问某些特定 Windows 功能的游戏或应用,或者是维护一个已经使用了旧版 .NET Framework 的大型项目,那么选择 .NET Framework 可能更合适。
  • 对于那些想要利用完整的 .NET 类库集以及 Windows 独有的功能的人来说,这也是个不错的选择。

8、总结

随着 Unity 版本的提升,你能够使用的 C# 新特性和功能也会增加。了解自己当前使用的 Unity 版本能支持的 C# 版本非常重要,这样你可以充分利用这些新特性来优化代码。此外,在大多数情况下,建议使用 .NET Standard 2.0 作为 API 兼容级别,以确保更好的跨平台支持和较小的应用程序体积。


专栏推荐

地址
【零基础入门unity游戏开发——C#篇】
【零基础入门unity游戏开发——unity通用篇】
【零基础入门unity游戏开发——unity3D篇】
【零基础入门unity游戏开发——unity2D篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线段树优化dp,abc389F - Rated Range

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 F - Rated Range 二、解题报告 1、思路分析 考虑定义 f(i, j) 为 初始分…

MySQL 主从复制原理及其工作过程的配置

一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作…

Linux——线程条件变量(同步)

Linux——多线程的控制-CSDN博客 文章目录 目录 文章目录 前言 一、条件变量是什么? 1、死锁的必要条件 1. 互斥条件(Mutual Exclusion) 2. 请求和保持条件(Hold and Wait) 3. 不可剥夺条件(No Preemption&…

【Android】蓝牙电话HFP连接源码分析

一、概述 在Android系统中,HF(Hands-Free Profile)客户端与AG(Audio Gateway)端之间的HFP(Hands-Free Profile)连接是蓝牙音频通信的重要组成部分。这一过程涉及多个层次和组件的协同工作&…

【机器学习实战入门】使用Pandas和OpenCV进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道,并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的,它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测? 颜色检测是检测任何颜色名称的过程…

动手学大数据-3社区开源实践

目录 数据库概览: MaxComput: HAWQ: Hologres: TiDB: Spark: ClickHouse: Apache Calcite 概览 Calcite RBO HepPlanner 优化规则(Rule) 内置有100优化规则 …

多平台下Informatica在医疗数据抽取中的应用

一、引言 1.医疗数据抽取与 Informatica 概述 1.1 医疗数据的特点与来源 1.1.1 数据特点 医疗数据具有显著的多样性特点。从数据类型来看,涵盖了结构化数据,如患者的基本信息、检验检查结果等,这些数据通常以表格形式存储,便于…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议,现在再来认识一下迭代版本 2。了解比起 1.1 版本,后面的版本改进在哪里,特点在哪里?话不多说,开始吧⭐️! 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

BUUCTF_Web(October 2019 Twice SQL injection)

October 2019 Twice SQL injection 知识点: 二次注入: 当用户提交的恶意数据被存入数据库后,应用程序再把它读取出来用于生成新的SQL语句时,如果没有相应的安全措施,是有可能发生SQL注入的,这种注入就叫…

电商项目高级篇08-springCache

电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…

【tailscale 和 ssh】当服务器建立好节点,但通过客户端无法通过 ssh 连接

背景 当服务器建立好节点&#xff0c;一切显示正常但通过客户端无法通过 vs code 中的 ssh 连接到服务器 问题解决 因为服务器是重装过的&#xff0c;所以忘记在服务器上下载 ssh 了。。。安装完成并启动 SSH 服务后便可正常连接&#xff01; sudo apt update sudo apt in…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测

OpenCV中边缘检测四种常用算子&#xff1a; &#xff08;1&#xff09;Sobel算子 Sobel算子是一种基于梯度的边缘检测算法。它通过对图像进行卷积操作来计算图像的梯度&#xff0c;并将梯度的大小作为边缘的强度。它使用两个3x3的卷积核&#xff0c;分别用于计…

[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()

目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget&#xff08;一般情况下默认会自带&#xff09; 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…

Golang Gin系列-1:Gin 框架总体概述

本文介绍了Gin框架&#xff0c;探索了它的关键特性&#xff0c;并建立了简单入门的应用程序。在这系列教程里&#xff0c;我们会探索Gin的主要特性&#xff0c;如路由、中间件、数据库集成等&#xff0c;最终能使用Gin框架构建健壮的web应用程序。 总体概述 Gin是Go编程语言的…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中&#xff0c;讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分&#xff0c;因为当时主要的工作重心不在这里&#xff0c;但在实现过程中&#xff0c;发现地…

IO多路复用详解-selectpollepoll

目录 1.IO多路复用概念 2.系统调用函数 2.1select 2.1.1select函数细节 2.2基于select实现并发处理 2.2.1处理流程 2.2.2服务端通信代码 2.2.3客户端通信代码 2.3基于poll函数实现并发处理 2.3.1select与poll函数区别 2.3.2poll函数 2.3.3服务器端代码实现 2.3.4客…

IDEA下载安装

目录 IDEAWin下载安装 Mac下载安装 IDEA中基本配置&注释修改背景主题为白色修改字体大小鼠标滚轮控制字体大小控制字母大小写提示&#xff08;取消勾选&#xff09;设置自动编译&#xff08;打勾&#xff09;自动保存&#xff08;参数为1&#xff09;设定参数提示&#xff…

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集

前面两篇已经交代AI和AENC模块的配置&#xff0c;这篇就让这两个模块绑定起来&#xff0c;绑定的原因是&#xff0c;Aenc从Ai模块拿到采集的原始数据进行编码。 使用 RK_MPI_SYS_Bind 把 AI 节点和 AENC 进行绑定&#xff0c;其中 enModId 是模块 ID 号选择的是 RK_ID_AI、s32C…

2.5G PoE交换机 TL-SE2109P 简单开箱评测,8个2.5G电口+1个10G光口(SFP+)

TPLINK&#xff08;普联&#xff09;的万兆上联的2.5G网管交换机TL-SE2109P简单开箱测评。8个PoE 2.5G电口&#xff0c;1个万兆SFP上联口。 2.5G交换机 TL-SE2420 简单开箱评测&#xff0c;16个2.5G电口4个10G光口(SFP)&#xff1a;https://blog.zeruns.com/archives/837.html…