关于Unity的C#基础学习

一、程序包含

1.数据:运行过程中产生的

2.代码:代码指令

数据和代码都是存放到内存中的,代码指令在程序加载的时候放到内存,数据是在程序运行的时候在内存中动态地生成,随时会被回收,要定义变量来存放数据

内存存储的最小单位是字节,内存中存放的是二进制数,只有1或者0,叫做位,1个字节可以存放8个bit,8位二进制11111111

二、C#的基本数据类型

1.整型(sbyte带符号的1个字节的整数,byte不带符号的1个字节的整数)(short带符号的2个字节的整数/ushort不带符号的2个字节的整数)(int带符号的4个字节的整数/unit不带符号的4个字节的整数)(long带符号的8个字节的整数/ulong不带符号的8个字节的整数)

2.浮点数(float 32bit=4字节/doouble 64bit=8字节)

3.逻辑数(true/false)

4.字符型(16位unicode)

5.复杂类型的引用变量(C中的指针),有一个100个字节的变量A,变量B指向变量A,那么B所占内存就叫做复杂类型的引用变量(64位的.net那么就是64位,32位的.net那么就是32位)

像MonoBehaviour就是一个复杂类型,string定义的字符串也是复杂类型

三、C#的权限修饰符

1.public 类以及类型成员的修饰符

2.private 类型成员的修饰符

3.protected 类型成员的修饰符

4.internal 类以及类型成员的修饰符

类型成员包括数据成员(类的实例)和类的方法(函数成员),数据成员不属于类,属于类的实例,类中定义多少数据成员,说明类的实例中就有多少数据成员属性。类的方法是逻辑,通用的,是属于类,代码存在固定的地方,只有唯一的一份逻辑,不管有多少个实例都是调用这一个逻辑

人类

数据成员:口,牙齿,舌头

类的方法:吃饭(调用口,牙齿,舌头吞下饭菜)

四、C#的类的定义

权限[public外部可以使用类,internal只能在内部使用类 ] +class +类的名称

public class GameScene {

}

组件也是一个类,类就是复杂数据类型

五、C#的数据成员的定义

权限[public外部可以直接访问,private外部(定义它的类的大括号外面)不能直接访问,protected继承的类可以访问,internal几乎没用过]+类型+数据成员的名称

private int age;

private string name;

private int sex;

六、C#的类的方法的定义

权限+返回值类型+类的方法的名称

public int setAge(int age){

逻辑

}

输入原料,产生牛奶

七、C#的类的实例

1.数据成员(每个实例分配有一组数据成员并占有各自的内存,都不一样,把一个实例的那组数据成员打包就是一个复杂数据对象,引用变量指向复杂数据类型的内存,使用引用变量来访问内存)

2.通用逻辑(共用的,只有一个,放在内存中,黑盒子,输入什么输出什么)

MyPerson person; //这里的person并不是类的实例,只是了定义一个类实例化的引用变量,类的实例化必须用new关键词创建

person=new MyPerson(); //现在才是类的实例化,person引用变量指向实例

可以使用类的实例引用变量来访问实例的数据成员+调用类的函数方法

person.age=10;

person.init_person(10,“xiaohong”);

八、C#的变量的定义

1.定义类的一个成员变量(数据成员)

private int age;

2.定义一个局部变量(函数内部定义的变量,有效范围是代码执行到这个函数的时候有效,离开这个函数的时候无效,内存回收)

void start(){

int a;

}

九、C#的this对象

类的函数,就像一个盒子,先往里面输入什么东西,然后执行盒子内部的逻辑,再输出或者不输出什么。

已知类的方法在内存中只占用唯一的内存,所有类的实例都是调用公用的类的函数,那么,怎么知道是哪个实例来调用的这个公用函数,怎么知道在处理逻辑的时候到底是处理哪个实例的数据成员的变化

这时候就需要一个this对象

MyPerson xiaohong;

xiaohong=new MyPerson();

xiaohong.init_person(10,“xiaohong”); //把this对象指向xiaohong引用变量所指向的内存,一起指定那个实例

MyPerson xiaoming;

xiaoming=new MyPerson();

xiaoming.init_person(10,“xiaohong”);//把this对象指向xiaoming引用变量所指向的内存,一起指定那个实例

MyPerson类中的函数定义

public void init_person(int age,string name){

  this.age=age;   //xiaohong.age=age

  this.name=name;  //xiaohong.name=name

}

this对象,相当于在函数参数传递的时候多传了一个变量进去,(int age,string name,MyPerson this),调用的时候是xiaohong.init_person(10,“xiaohong”,xiaohong);

通过this在函数里面访问到指定的类的实例的数据,数据成员是private权限的也可以访问,因为函数是在类内部的。

十、实例的回收

在函数中

MyPerson xiaoming;

xiaoming=new MyPerson();

MyPerson person=xiaoming;//等于定义一个person引用变量,也指向xiaoming实例,这时候两个引用变量一起指向同一个实例

当函数执行结束的时候,xiaoming和person都释放掉,等于现在没有一个引用变量指向xiaoming实例,这个实例就会自动被垃圾回收器回收掉,原来实例对象所占用的内存也回收了,程序员是不用管回收的

十一、内存模型

程序运行时产生,根据执行时遇到的是变量还是对象决定放到栈还是堆内存中

栈:存放局部变量,函数返回后回收

堆:存放new出来的复杂对象,数据成员包,没有任何一个引用变量指向实例内存的时候回收

一加载就放到内存中去,一点击exe文件的时候

数据段:存放数据(全局变量,静态数据)。常住内存,永远不会回收的,除非程序员自己删除

代码段:存放函数指令,每一个函数都有一个唯一的指令存放在代码段中,init_person(),所有实例公用,一条一条执行。常住内存,永远不会回收的,除非程序员自己删除

时间: 2024-10-08 20:30:20

关于Unity的C#基础学习的相关文章

怎么规划一个零基础学习Unity3D的“方法”或者“流程”?

具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣,就学习下. 推荐学习视频网页:http://www.taikr.com/ 虽然要钱不过有免费的. http://study.163.com/course/introduction.htm?courseId=1002818014  游戏特效 - Unity3d特效基础 - 入门到精通(免费)  ht

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Create->Unity 2D Sprite 查看Inspector窗口 接着是在Unity中制作Sprite: 在Project窗口创建Textures文件夹,并从外部拖入一些图片素材,然后选中需要转成Sprite的图片,然后在Inspector窗口进行转变Sprite的操作,如图. 选择Sprite(2D

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Linux新手入门书籍推荐 鸟哥的linux私房菜-基础学习篇

这本书写的不错.赞~\(≧▽≦)/~ 2017-02-24 下午,我开始在Linux下写第一个.c程序,在终端打印hello world.gcc 源代码文件之后,输出可执行文件,但是 当我输入文件名执行它的时候,却提示我 无法找到命令.于是我找百度,查资料,花了半个小时,终于找到解决方法了, 输入"./filename"即可.... 2017-02-25 我看<基础学习篇>这本书,在P158页下面的例题讲解中找到了昨天下午异常的解析.我就很是感慨,心想:要是早看这本书,半个

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

零基础学习 Hadoop 如何下手

想学习hadoop,可是苦于自己没有任何的基础,不知道该如何下手,也不知道自己能不能学会.其实零基础学习hadoop,没有想象的那么困难.曾经我也是一位小白,刚接触到云计算,想过培训,但是培训机构的选择也让我很纠结,就自己开始去摸索学习,现在我把自己的学习思路整理一下,希望对大家有帮助. 首先整体说一下学习过程给大家借鉴: 一.了解hadoop: 这里不具体阐述概念,有兴趣的同学可以自己上网去查.我们知道hadoop,有单机安装,伪分布安装和分布安装.同时hadoop的环境是Linux,所以我们

HTML&CSS基础学习笔记13—无序列表

无序列表 有时我们的工作繁忙,杂事很多,怕忘记,就会把事情一件件列出来,防止忘记. 它们的排列顺序对于我们来说并不重要,可以随意调换,我们将它称为无序列表,HTML里用<ul>标签来表示无序列表,列表里的项目则用<li>标签来表示: 1 2 3 4 5 <ul>     <li></li>     <li></li>     ... </ul> 看一段实例代码: 对于的浏览器显示结果是这样的: 更多内容学习,请