【从零开始入门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

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

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

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

相关文章

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息…

CSS学习记录11

CSS布局 - display属性 display属性是用于控制布局的最终要的CSS属性。display 属性规定是否/如何显示元素。每个HTML元素都有一个默认的display值,具体取决于它的元素类型。大多数元素的默认display值为block 或 inline。 块级元素(block element&…

ByteCTF2024

wp参考: 2024 ByteCTF wp 2024 ByteCTF WP- Nepnep ByteCTF 2024 writeup by Arr3stY0u 五冠王!ByteCTF 2024 初赛WriteUp By W&M ByteCTF 2024 By W&M - W&M Team ByteCTF Re WP - 吾爱破解 - 52pojie.cn 2024 ByteCTF - BediveRe_R…

C#,在 C# 语言中将 LaTeX 转换为 PNG 或 JPG 图像

在 C 语言中将 LaTeX 转换为 PNG 或 JPG 图像# 12月 28, 2021 2 分钟 法尔汉拉扎 在 C 语言中将 TeX 转换为 PNG JPG 图像# TeX 格式用于处理技术和科学文件。它通常用于交流或发布此类文档。在某些情况下,您可能需要将 TeX 文件渲染为 PNG 或 JPG 等图像…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展,AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统,AI技术赋予监控系统实时分析、智能识别和精准预警的能力,让“被动监视”转变为“主动防控”。 二、AI监控应用…

搭建Tomcat(一)---SocketServerSocket

目录 引入1 引入2--socket 流程 Socket(应用程序之间的通讯保障) 网卡(计算机之间的通讯保障) 端口 端口号 实例 client端 解析 server端 解析 相关方法 问题1:ServerSocket和Socket有什么关系? ServerSocket Soc…

爬虫学习案例5

爬取b站一个视频 罗翔老师某一个视频很刑 单个完整代码: 安装依赖库 pip install lxml requests import osimport requests import re from lxml import etree import json # 格式化展开输出 from pprint import pprint # 导入进程模块 import subprocess head…

【深度学习】 零基础介绍卷积神经网络(CNN)

零基础介绍 卷积神经网络(CNN,Convolutional Neural Network)是深度学习中的一种神经网络,特别擅长处理图像和视频等有空间结构的数据。 假设我们在做一个“照片分类”的任务,比如判断一张照片中是猫还是狗。下面用一…

【计算机组成原理】实验二:通用寄存器单元实验

实验二:通用寄存器单元实验 一、实验目的 了解通用寄存器的组成和硬件电路,利用通用寄存器实现数据的置数、左移、右移等功能。 二、实验内容 数据输入通用寄存器 寄存器内容无进位位左移实验 寄存器内容无进位位右移实验 三、实验步骤和结果 实…

4G模块详解

在之前的教程中,无线通信技术我们学习了蓝牙和 WiFi,今天我们要来学习 4G。 4G 模块在距离上有个突破,它不像蓝牙短距离,也不像 WiFi 只能在局域网,4G 模块可使用户无论在哪,只要有 4G 网络信号覆盖&#…

Visual Studio 使用 GitHub Copilot 聊天

🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

TimerPickerDialog组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为时间,它主…

Linux高并发服务器开发 第四天(wc/whoami命令 权限修改chmod 添加/删除用户(组) 切换用户 修改文件所有者/所属组 查找/过滤)

目录 1.wc和whoami命令 1.1wc命令 1.2whoami命令 2.用户权限/用户/用户组 2.1修改文件权限chmod 2.1.1文字设定法 2.1.2数字设定法 2.2添加删除新用户和新用户组 2.3切换用户 2.4修改文件所有者和所属组 2.4.1修改所有者 2.4.2修改所属组 3.查找和过滤 3.1find—…

微服务架构导学

一. 什么是微服务 微服务是一个软件架构风格,将一个大型的项目拆分成多个小项目,每个项目都被称为一个微服务,通过多个微服务共同组成一个大的项目。 二. 单体架构和微服务架构 单体架构 将整个项目的功能、模块全部堆积在一个项目中 优点&am…

【kubernetes】kubectl get nodes报NotReady

目录 1. 说明2. 问题描述3. kube-flannel.yml 1. 说明 1.这里k8s的版本是v1.17.4。2.若kube-flannel.yml中的镜像拉取不下来,可以下载本文章的文件资源,手动docker load -i ***.tar的方式。3.v1.17.4的kube-flannel.yml参考下面代码。4.通过kubectl get…

web实操7——ServletContext

概念 和服务器通信 功能 解释说明: mime:互联网中一种文件的类型,可以用servletContext对象来获取。 域对象:用来共享数据,里面有一些get,set,removeAttribute,只要搞清楚ServletContext对象的域的范围是什么 如何…

LLMC:大语言模型压缩工具的开发实践

关注:青稞AI,学习最新AI技术 青稞Talk主页:qingkelab.github.io/talks 大模型的进步,正推动我们向通用人工智能迈进,然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术,虽然可以用来加速…

舌头分割数据集labelme格式2557张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2557 标注数量(json文件个数):2557 标注类别数:1 标注类别名称:["tongue"] 每个类别标注的框数&#xff1…

测试工程师八股文03|Python编程题

一、题目 1、合并两个数组 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:nums1[m:] nums2nums1.sort()2、判断链表中是否有环 class Solution:def hasCycle(self, head: ListNode) -> bool:seen set()while head:if…

MyBatis-Plus 基础

教程 视频教程:https://www.bilibili.com/video/BV1Xu411A7tL 详细文档:https://b11et3un53m.feishu.cn/wiki/PsyawI04ei2FQykqfcPcmd7Dnsc 常见注解 MybatisPlus就是根据PO实体的信息来推断出表的信息,从而生成SQL的。默认情况下&#xf…