当前位置: 首页 > news >正文

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

文章目录

  • 前言
  • 前置条件
  • 进制
    • 什么是十进制、二进制
    • 二进制有什么用?
      • 为什么计算机用二进制而不用十进制?
      • 二进制转十进制
      • 十进制转二进制
      • 二进制运算
  • 计算机中的数据存储单位
  • 什么是编程?
  • 什么是代码?
  • 什么是编程语言?
  • 常见的编程语言
  • 什么是C#?
  • 学习Unity为什么要先学习C#?
  • 选择适合自己的IDE集成开发环境
  • 专栏推荐
  • 完结

前言

这个系列我想了很久,最后决定还是整理出来。因为太多人问我如何零基础入门unity,我想着与其推荐,不如自己整理整理。

这个系列重点是压缩知识,只包含常用和必要的知识,尽量少讲理论知识,多举例说明,做到理论和实践相互结合,这样更容易理解。我会不断补充完善它,一方面是分享,另一方面是自己也可以扎实一下基础。我希望可以达到,无论是任何知识点,搜索查看之后几秒钟就能知道它是怎么且如何使用,这样后面忘记了某些知识点还可以把它当作文档回头查看。

文章虽然写的是零基础入门,但是其实无论是新手,还是有一定编程基础的人,我相信都能从中有所收获。扎实的基础真的很重要,不要等房子建起来了,才去修复地基,这无疑是十分困难且危险的行为。

如果你自认为基础已经很好了,那我简单提几个问题,看你是否能答上来:

  • 栈和堆的概念,值类型和引用类型区别
  • 委托和事件的区别?如何实现观察者模式?
  • 什么是程序集和反射?为什么需要反射?
  • 什么是GC、装箱和拆箱,如何优化?
  • 什么是特性,如何自定义特性?
  • 泛型的使用?
  • 进程和线程,如何实现多线程?
  • 什么是里氏替换原则?

好了,本文是开篇,主要是讲一下理论知识,看不懂也没关系,了解一下有个印象就行了。

前置条件

  • 只需要一台电脑

进制

什么是十进制、二进制

十进制很简单,其实就是我们生活中一直用的0123456789,逢十进一,9之后就是10
同理二进制就是逢二进一,0 1之后就是10 11 100 101…

二进制有什么用?

二进制是计算机系统中用来表示数据的一种基本数制,它只使用两个符号:0 和 1。每个符号称为一个“位”(bit)。

二进制位的组合是计算机存储和处理信息的基础。通过不同的二进制位组合,计算机可以表示数字、文本、图像、声音等各种各样的数据。

为什么计算机用二进制而不用十进制?

因为电路的开和关可以很容易地表示为0和1。二进制系统在硬件实现、可靠性、逻辑运算和数学基础等方面都有显著的优势,这使得它成为计算机内部表示和处理数据的首选数制。尽管我们人类通常使用十进制,但计算机使用二进制可以更高效、更可靠地执行各种计算任务。

二进制转十进制

二进制数转换成十进制数的方法是将每个位的值乘以其对应的2的幂次,然后将结果相加。例如,二进制数 1011 转换成十进制数的过程如下:

1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11

所以,二进制数 1011 等于十进制数 11

十进制转二进制

十进制数转换成二进制数的方法是不断用2去除该数,记录下每次除法的余数,然后将这些余数倒序排列。例如,十进制数 11 转换成二进制数的过程如下:

11 ÷ 2 = 5 余 1
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1

将余数倒序排列得到二进制数 1011

二进制运算

二进制运算包括逻辑运算(如AND、OR、NOT、XOR等)和算术运算(如加法、减法、乘法、除法等)。例如,二进制加法:

  1011
+ 1101
------10100

这表示十进制中的 11 + 13 = 24

计算机中的数据存储单位

计算机中的数据存储单位从小到大依次为:

单位符号字节大小 (Bytes)比特大小 (Bits)
bit1/81
字节B18
千字节KB10248192
兆字节MB1024 * 10248192 * 1024
吉字节GB1024 * 1024 * 10248192 * 1024 * 1024
太字节TB1024 * 1024 * 1024 * 10248192 * 1024 * 1024 * 1024
拍字节PB1024 * 1024 * 1024 * 1024 * 10248192 * 1024 * 1024 * 1024 * 1024
艾字节EB1024 * 1024 * 1024 * 1024 * 1024 * 10248192 * 1024 * 1024 * 1024 * 1024 * 1024
泽字节ZB1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 10248192 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024
尧字节YB1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 10248192 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024

注意:

  • 位(Bit):是计算机中最小的数据存储单位,每个位只能是0或1。其实就是前面说的一个二进制位
  • 字节(Byte):由8个位组成,是计算机中最常用的数据存储单位。1字节通常可以存储一个字符(如字母、数字或符号),具体和编码格式有关。

这些单位帮助我们理解和管理不同大小的数据。例如,一个文本文件的大小可能是几KB,一张高分辨率的图片可能是几MB,一部高清电影可能是几GB,而大型数据库或云存储系统可能会以TB或PB来衡量。

什么是编程?

编程(也叫编码或开发)是通过特定的编程语言与计算机进行沟通的过程。通过编程,我们可以告诉计算机执行特定的任务。计算机本身只会执行非常基础的操作(如数学运算、数据存储、信息处理等),而编程则是人类用计算机能理解的语言编写一系列指令,指示计算机如何完成一个任务。

编程的目的是让计算机能够按照我们的需求工作,例如做一个网页、开发一个应用程序、分析数据,甚至是控制硬件设备等。

什么是代码?

代码是编程语言的具体表达形式,是程序员用来告诉计算机如何做某事的一系列指令。每一行代码都是为了实现某个功能,代码的逻辑结构决定了程序的行为。

什么是编程语言?

编程语言是一种人工语言,它用于定义计算机程序的行为和操作。通过编程语言,开发者能够向计算机发出指令,控制计算机的执行过程。编程语言包括一系列的语法规则和语义,用于描述数据的结构、操作以及程序的逻辑。

编程语言可以分为以下几类:

  • 低级语言(如汇编语言):

    直接与硬件交互,依赖于计算机的体系结构。
    与机器码的接近,语法和语义很简单,但可读性差,开发难度较高。

  • 高级语言(如Python、Java、C#、JavaScript等):

    离硬件较远,更接近人类语言,便于理解和编写。
    提供了更多的抽象功能,如内存管理、面向对象的支持等。

  • 脚本语言(如JavaScript、PHP、Ruby等):

    通常用于Web开发,语法简洁,开发周期短,主要用于动态网页和自动化任务。

  • 标记语言(如HTML、XML等):

    用于描述数据结构,非编程语言,但在计算机科学中用于组织数据。

  • 查询语言(如SQL):

    用于与数据库进行交互,进行数据查询、插入、更新等操作。

常见的编程语言

  • Python:简洁、易学,广泛用于Web开发、数据科学、人工智能等领域。
  • Java:面向对象,跨平台,广泛应用于企业级应用、Android开发等。
  • C:结构化编程语言,适合底层开发,常用于系统开发和嵌入式系统。
  • C++:C语言的扩展,支持面向对象编程,广泛应用于游戏开发、系统软件、应用软件等。
  • JavaScript:主要用于Web开发,能够在浏览器中执行,支持动态网页。
  • Ruby:动态、面向对象,广泛应用于Web开发(特别是Ruby on Rails框架)。
  • Swift:Apple开发的编程语言,主要用于iOS和macOS应用开发。
  • C#:微软开发的语言,主要用于Windows应用、游戏开发、Web开发等。

什么是C#?

C#(发音为 “C-Sharp”)是一种由微软开发的现代编程语言,属于C语言家族,并且是 .NET 平台的一部分。它结合了C、C++、Java等语言的特点,具备简洁、强大、类型安全的特性,适合进行各种类型的开发,包括桌面应用、Web应用、移动应用、以及游戏开发等。

C#的特点包括:

  • 面向对象:支持类、对象、继承、多态、封装等面向对象的编程思想。
  • 类型安全:强类型检查,避免类型不匹配的错误。
  • 简洁的语法:相比C++,C#的语法更简洁,减少了很多复杂的细节。
  • 自动垃圾回收:C#由.NET的垃圾回收机制管理内存,避免了手动管理内存的麻烦。
  • 跨平台支持:通过 .NET Core(现为 .NET 5/6 等版本)提供跨平台的支持,C#可以在Windows、Linux和macOS等操作系统上运行。

学习Unity为什么要先学习C#?

  • Unity的脚本语言是C#,没有C#的基础,你将无法理解和编写Unity项目中的代码。
  • C#语法简洁且功能强大,它为Unity开发提供了高效的编程能力。
  • C#是跨平台的语言,这意味着你可以通过掌握它开发各种平台的游戏和应用。
  • C#的学习资源丰富,不仅限于Unity开发,对于其他编程任务也有广泛应用。

选择适合自己的IDE集成开发环境

IDE(Integrated Development Environment,集成开发环境)是一种为程序员提供开发、调试和执行程序所需工具的综合软件环境。它通常包含一个代码编辑器、调试器、构建工具、代码补全、版本控制等功能,目的是提高开发效率,简化软件开发流程。

目前市面上的IDE有很多,其中比较适合用于C#开发的包括Visual Studio(VS)和Visual Studio Code (VSCode),还有最近非商用免费开放的Rider。

其实选择哪个IDE都可以,根据自己喜欢选择即可。

这里我用的是VSCode,因为我一直用的都是VSCode,选择它原因:

  • VScode是一款轻量级的编辑器,安装包非常小,而且启动速度非常快。
  • 它拥有丰富的插件系统,更像一个任何语言都可以使用的万能的编辑器
  • 代码跟踪功能。绝大多数情况下要使用Git来管理我们的代码,这个时候VScode会跟踪我们的代码,非常明显地为我们标注修改内容。
  • 好看

专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

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

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

相关文章:

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

文章目录 前言前置条件进制什么是十进制、二进制二进制有什么用?为什么计算机用二进制而不用十进制?二进制转十进制十进制转二进制二进制运算 计算机中的数据存储单位什么是编程?什么是代码?什么是编程语言?常见的编程…...

怎样提升企业网络的性能?

企业网络的稳定性和高效性直接影响员工的工作效率。以下从多维度分析了一些有效策略,帮助公司提升网络性能,营造更高效的办公环境。 1. 升级网络设备 采用性能更高的网络硬件是优化网络体验的重要基础。选择支持高吞吐量、低延迟的设备(如企业…...

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习:已对训练数据完成标记 分类:根据数据及其分类信息来进行训练,使模型能够对新的数据进行分类 回归:给出一组特征值来预测目标数值 2. 无监督学习:没有对训练数据进行任…...

四叉树算法在游戏碰撞检测中的应用

简介 在游戏开发中,碰撞检测是一个非常重要但计算成本较高的环节。如果采用简单的暴力检测方法,需要对场景中的每个物体与其他所有物体进行碰撞检测,时间复杂度为O(n)。四叉树(Quadtree)算法通过空间划分的方式,可以显著降低碰撞…...

IDEA 打包普通JAVA项目为jar包

需求:普通java项目(有添加依赖的jar包),没有用maven管理依赖和打包,要打成jar包,包可以用“java -jar 包名” 启动程序。 讲如何打包前,先记录下普通项目的目录结构和怎么添加依赖包 1.目录结…...

Docker Compose 多应用部署 一键部署

介绍 Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。 如:springbootmysqlnginx 如果一个个去部署他会非常的麻烦,这时候可以选择Docker …...

软件架构设计——通用表单UI—未来之窗行业应用跨平台架构

.东方仙盟_小世界 {margin-top: 2%;padding: 0 3%;background: #fff; } .东方仙盟_小世界 li span {width: 55px;padding-left: 0px; }.东方仙盟_小世界 li span {display: block;position: absolute;left: 0px;padding-left: 10px;width: 55px;font-size: 16px;background-siz…...

人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM

上一篇:《人工智能大语言模型起源篇(一),从哪里开始》 (5)Howard 和 Ruder 于2018年发表的《Universal Language Model Fine-tuning for Text Classification》,https://arxiv.org/abs/1801.06…...

VBA 连续打印多个内容成PDF

VBA 连续打印多个内容成PDF Dim wb As Workbook Dim sht1 As Worksheet Set sht1 ActiveSheet PT ThisWorkbook.PathApplication.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManual For i [aa2] To [ab2][ad2] iSet wb …...

9. 高效利用Excel设置归档Tag

高效利用Excel设置归档Tag 1. Excle批量新建/修改归档Tag2. 趋势记录模型批量导入归档Tag(Method1)2. 趋势记录模型批量导入归档Tag(Method2)3. 趋势记录控件1. Excle批量新建/修改归档Tag Fcatory Talk常常需要归档模拟量,对于比较大的项目工程会有成千上万个重要数据需…...

ubuntu系统生成SSL证书配置https

自签名【Lets Encrypt】的测试证书,有效期三个月。 第一步:安装acme,如果没有安装git,需要提前安装 下载came资源 git clone https://github.com/Neilpang/acme.sh.git 无法访问,可以试用gitee的资源,安…...

顺序表(数据结构初阶)

文章目录 顺序表一:线性表1.1概念: 二:顺序表2.1概念与结构:2.2分类:2.2.1静态顺序表2.2.2动态顺序表 2.3动态顺序表的实现声明(初始化)检查空间容量尾插头插尾删头删查找指定位置之前插入数据指…...

AOF和RDB【Redis持久化篇】

文章目录 1.什么是持久化?2.RDB3.AOF 1.什么是持久化? Redis是跑在内存里的,当程序重启或者服务器崩溃,数据就会丢失,如果业务场景希望重启之后数据还在,就需要持久化,即把数据保存到可永久保存…...

数据可视化大屏UI组件库:B端科技感素材PSD

在数据可视化领域,一个出色的大屏UI设计不仅能够准确传达数据背后的信息,更能提升用户的视觉体验。然而,对于UI设计师而言,设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题,我们推出了这款数据可…...

【力扣算法】234.回文链表

快慢指针:一个指针走两步,一个指针走一步,当快指针走到链表末尾时,慢指针走到中间位置。 逆转链表:根据指针位置分成两个表,逆转第二个表。 按序判断就可以,如果是相同就是回文,反之…...

MVC流程分析

DisaptcherServlet本质是servlet&#xff0c;执行init()方法&#xff0c;自启动底层执行代码&#xff0c; 作用&#xff1a; 1、读取springmvc配置文件&#xff0c;创建Controller对象&#xff0c;放入容器中&#xff0c;map<"id",对象> 2、接收用户请求&#…...

编程中常见的技术难题有哪些?

技术的未来&#xff1a;如何驾驭变革 引言 在科技迅猛发展的今天&#xff0c;变革已成为常态。你是否感受到这一波潮流的力量&#xff1f;我们正身处一个充满机遇与挑战的时代。诸如人工智能、区块链、云计算等技术如同狂风骤雨&#xff0c;席卷我们的生活与工作方式。那么&a…...

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念&#xff0c;并解决一个经典问题&#xff1a;斐波那契数列。学生将学习如何使用动态规划优化递归计算&#xff0c;并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...

前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决

文章目录 遇到一个前端bug&#xff0c;点击生成邀请码 打开对话框 然后我再点击叉号&#xff0c;退出对话框&#xff0c;虽然退出了对话框&#xff0c;但是显示灰色界面。如下图&#xff1a; 导致界面就会失效&#xff0c;点击任何地方都没有反应。 发现是如下代码的问题&am…...

使div每次隐藏显示后都从顶部开始

<div ref"addmodel" > <!-- 这里内容很长&#xff0c;超出屏幕。。。 --> </div> methods:{ // 页面显示时滚动至顶部 scrollToTop() { const addmodel this.$refs.addmodel; if (addmodel) { addmodel.scrollTop 0; } }, } 在div每次显示或者…...

Spring Boot 常用注解面试题深度解析

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot 常用注解面试题深度解析一、核心…...

单例模式与锁(死锁)

目录 线程安全的单例模式 什么是单例模式 单例模式的特点 饿汉实现方式和懒汉实现方式 饿汉⽅式实现单例模式 懒汉⽅式实现单例模式 懒汉⽅式实现单例模式(线程安全版本) 单例式线程池 ThreadPool.hpp threadpool.cc 运行结果 线程安全和重⼊问题 常⻅锁概念 死…...

机器学习监督学习实战四:九种回归算法对波士顿房价数据进行回归预测和评估方法可视化

本项目代码在个人github链接&#xff1a;https://github.com/KLWU07/Machine-learning-Project-practice/tree/main 处理流程 1.导入波士顿房价数据集并进行预处理。2.使用 GradientBoostingRegressor 模型进行回归分析。3.通过交叉验证评估模型的性能&#xff0c;计算 MAE、…...

大数据+智能零售:数字化变革下的“智慧新零售”密码

大数据+智能零售:数字化变革下的“智慧新零售”密码 大家好,今天咱们聊聊一个火到不行的话题:大数据在智能零售中的应用。这个领域,不仅是技术的“硬核战场”,更是商业创新的风口浪尖。谁能玩转数据,谁就能掌控消费者心智,实现销售爆发。 咱们不搞枯燥学术,而是用最“…...

深入解析JVM工作原理:从字节码到机器指令的全过程

一、JVM概述 Java虚拟机(JVM)是Java平台的核心组件&#xff0c;它实现了Java"一次编写&#xff0c;到处运行"的理念。JVM是一个抽象的计算机器&#xff0c;它有自己的指令集和运行时内存管理机制。 JVM的主要职责&#xff1a; 加载&#xff1a;读取.class文件并验…...

分库分表的取舍

文章目录 大数据量下采用**水平分表**的缺点**1. 跨表查询复杂性与性能下降****2. 数据分布不均衡****3. 分布式事务与一致性问题****4. 扩展性受限****5. 查询条件限制与索引管理复杂****6. 数据迁移与维护成本高****7. 业务逻辑复杂度增加****总结** shardingJdbc分片策略**1…...

CAN通信收发测试(USB2CAN模块测试实验)

1.搭建测试环境 电脑&#xff1a;安装 USB 驱动&#xff0c;安装原厂调试工具&#xff0c;安装cangaroo&#xff08;参考安装包的入门教程即可&#xff09; USB驱动路径&#xff1a;~\CAN分析仪资料20230701_Linux\硬件驱动程序 原厂调试工具路径&#xff1a;~\CAN分析仪资料2…...

【统计方法】树模型,ensemble,bagging, boosting

决策树基础 回归树 理论上&#xff0c;决策区域可以有任何形状。• 然而&#xff0c;我们选择将预测空间划分为高维矩形或框&#xff0c;这是为了简单和易于解释结果预测模型 目标&#xff1a;将预测空间划分为矩形区域&#xff0c;最小化残差平方和&#xff08;RSS&#x…...

浏览器后台服务 vs 在线教育:QPS、并发模型与架构剖析

本文深入分析浏览器后台服务与在线教育平台在高并发场景下的架构设计差异&#xff0c;涵盖 QPS&#xff08;每秒请求数&#xff09;承压能力、服务模型、数据一致性、容灾机制等多个维度&#xff0c;力图为系统架构师和后端工程师提供实战参考。 一、什么是高并发场景&#xff…...

【力扣链表篇】19.删除链表的倒数第N个节点

题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]…...