unity让对象作为参数_C#+Unity学习笔记:类与对象
参考文献
蜜酒厅通讯社 游戏部 石中居士
对象(object):有状态、行为和身份的东西。
状态(state):表示物体特征的信息,可以用来跟踪对象的状态。
属性(properties):因为编程人员需要把控对象的状态,所以要对其进行访问。通过属性可以访问对象的状态。
行为(behavior):编程人员要求对象能够采取的行动以及对对象操作的行动。
方法(methods):调用对象的方法,以指定对象的行为。
身份(identity):用来区分对象的标志。
我们不需要看到对象的内部来使用对象,只需要使用属性和方法来命令它。
封装(Encapsulation):将相关字段和行为组合成一个对象的过程
类(class):描述类中对象的字段、属性和方法,作为新对象的模版。
实例化(instantiation):我们使用实例化从类创建一个新对象。
统一建模语言(UML,Unified Modeling Language):用这一语言,显示为问题解决方案设计的类和对象的结构。我们将把类名的第一个字母大写,并以对象名的小写字母开头,这样就很容易从名称中分辨出是类还是对象。
关于字段,我们以小写字母开始每个字段名。每个变量后面都有一个数据类型(值类型或引用类型—类)。当我们在C#中声明变量时,数据类型在变量名之前,但是在UML中顺序相反。
我们以大写字母开始每个属性名。
类成员(class members):类的字段、属性和方法被称为类成员。
函数(functions):在Unity文档中函数和方法是一个意思。
编写一个Message类
构造函数只有一个string参数。而我们希望对象持有的message就是这个参数。
1.如何创建message对象:
// ClassName objectName = new ClassName(arguments);// ClassName : 对象objectName的类名// 对象名由arguments——构造函数的实参创建
我们想输出一个消息“Hi!”,则:
Message hiMessage = new Message("Hi!");
// 运行程序时,hiMessage作为新对象创建,对象生成时,message的内部设置为字符串“Hi”。
创建多行消息,则:
Message mutiMessage = new Message("Hello,world\n" +
"I'm a Viking.\n" +
"Oh,Damn.");转义字符串(escape sequence):\n(换行)、\t(制表符)、\r(回车)、\\(反斜线转义)、\"(双引)
输出上面创建的多行消息,则要调用对象的Print方法:
mutiMessage.Print();
// 我们不需要向方法传递任何参数,因为我们要打印的消息的字符串已经包含在对象本身中;// 这就是为什么我们在调用构造函数时提供消息字符串的原因。// 要为对象调用这种方法,我们从对象的名称开始;这告诉C#应该使用哪个对象。// 然后输入句点,然后是方法名。这告诉c#在给定对象中使用哪个方法。// 最后,我们把方法需要的参数放在开括号和闭括号之间。// 因为Print方法不需要任何参数,所以我们没有在括号中放入任何东西(但是我们仍然需要包含括号!)。
我们也可以分成三步,第一步,我们声明变量;第二步,创建对象;第三步,输出。
Message mutiMessage;
mutiMessage = new Message("Hello,world\n" +
"I'm a Viking.\n" +
"Oh,Damn.");
mutiMessage.Print();
在声明对象的同时创建对象更好一些。
应用程序类代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PrintMessage {
/// /// Prints a message to the console/// class Program {
/// /// Prints the message/// /// command-line arguments static void Main(string[] args) {
Message mutiMessage = new Message("Hello,world\n" +
"I'm a Viking.\n" +
"Oh,Damn.");
mutiMessage.Print();
Console.WriteLine();
}
}
}
调用方法
1.没有返回值和参数的方法
objectName.MethodName()
// objectName:对象名// MethodName:调用方法名// 因为没有返回值,所以不创建变量并赋值
2.有返回值、没有参数的方法
variableName = objectName.MethodName();
// variableName:持有返回值的变量名// objectName:对象名// MethodName:我们调用的方法名// 因为有返回值,所以要创建变量并赋值
3.没有返回值、有参数的方法
objectName.MethodName(argument,argument,...);
// objectName:对象名// MethodName:我们调用的方法名// argument:每个参数的实参// 因为有参数,所以要在括号里加上argument
4.有返回值、有参数的方法
variableName = objectName.MethodName(argument,argument,...)
// variable:持有返回值的变量名// objectName:对象名// MethodName:我们调用的方法名// argument:每个参数的实参// 因为有返回值且有参数,所以要创建变量并赋值,在括号里加上argument。
以洗牌为例,这是个不需要返回值和参数的方法:
deck.Shuffle();
我们执行程序时,到达方法调用的部分,程序会转到方法,执行方法中的代码,然后返回到原始程序中的下一行代码。
从一副牌中抓取顶牌的实例(调用有返回值但无参数的方法):
card = deck.TakeTopCard();
// 我们调用一个方法,返回一个值,我们需要再设置一个变量来持有这个值。// 方法名之后要加()。deck.TakeTopCard();
// 而这个代码只是单纯地用方法处理,而不返回。// 所以对于有返回的方法,我们应该设法保存返回值以便后续对其进行操作。
切牌的实例(调用有参数但无返回值的方法):
deck.Cut(26);
// 在特定的位置26进行切牌// 只有稍微复杂的调用方法才会有参数// 调用的时候,对于方法头中的每一个参数我们都要提供一个实参方法头中的参数数量和方法调用中的实参数量必须匹配。
对于方法调用中的每个参数,参数的数据类型必须与参数的数据类型匹配。
如果一个方法有多个参数,我们需要以正确的顺序提供它们。C#使用方法调用中列出参数的顺序来匹配参数和实参。
如果参数是值类型,我们可以为实参使用变量,也可以使用文字。
int cutLocation = 26;
deck.Cut(cutLocation);
// 这种形式也是可以的
当调用的方法既有返回值又有参数时,有:
defLocation = bandName.IndexOf("Def");
// 我们提供了一个字符串,作为实参,将返回值保存在defLocation中。
参考^Beginning C# Programming with Unity Visual Studio Edition
unity让对象作为参数_C#+Unity学习笔记:类与对象相关推荐
- Java 入门知识学习笔记 (类和对象)
一.类和对象的定义及关系 1.类是同一类别对象的抽象定义:可以理解为是某一类具体对象的模子,确定对象将会拥有的特性,包括该类对象具备的属性和方法. 2.对象是对类的一种具体化的客观存在,是对类的具体实 ...
- (JAVA学习笔记) 类与对象小结
1.类与对象 类是一个抽象的模板: 对象是类的一个具体的实例: 2.方法 方法的定义:修饰符,返回类型,方法名,参数列表,异常抛出,返回值. 方法的调用:静态方法,非静态方法,形参和实参,值传递和引用 ...
- java学习笔记-类与对象示例
类与对象 环境 类和对象的概念 代码格式 实例化对象 调用方法 小游戏:王者solo赛 问题:如果有100个英雄呢? 继承 概念 格式 具体内容 子类可以继承到父类的哪些 方法重写: 自动转型: 优点 ...
- Kotlin学习笔记——类和对象
推荐kotlin学习书籍 下载链接: https://pan.baidu.com/s/19b5WYDD3Yqh1CAsRvpUsqQ 提取码获取方式:扫描关注下面微信公众号,回复关键字: kotlin ...
- C#.NET学习笔记 -类,接口,对象
在开始谈接口和类的总结之前,先来了解接口和类的基本概念.熟悉了概念再来看代码就容易理解些. 先来看类的概念:什么是类? 类是面向对象程序设计的核心,实际上是一种复杂的数据类型.将不同类型的数据和与这些 ...
- JavaScript:学习笔记(9)——Promise对象
JavaScript:学习笔记(9)--Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...
- python学习笔记4(对象/引用;多范式; 上下文管理器)
python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...
- C++ 中 参数包 (typename ...) 学习笔记
C++ 中 参数包 (typename -) 学习笔记 本文所属地址 https://www.lucien.ink 起因 突然好奇 STL 的 std::tuple 是怎么实现不定参数的,遂搜了搜,发 ...
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
最新文章
- AC自动机 + 概率dp + 高斯消元 --- HDU 5955 or 2016年沈阳icpc H [AC自动机 + 概率dp + 高斯消元]详解
- 通过a标签在页面上显示视频网站中的视频
- BZOJ2938:[POI2000] 病毒
- [转]快速使用FileProvider解决Android7.0文件权限问题
- 十进制转任意进制-数论
- 国密算法-商密认证-硬件加密-同方TF32A09-32位高速加密芯片
- 首次曝光!支付宝支付加密规则梳理,写的太好了!
- 【高频电子线路】[模型]阻抗变换与阻抗匹配(第2章 谐振功率放大器)
- 怎样修改MySQL数据库的密码
- 腾讯云 obs 推流一直断开连接无法进行直播
- 网页加速优化简单总结
- 现在很迷茫,完全不知道自己能干什么
- 哔哩哔哩mac客户端!亲测!支持big sur系统
- 量化投资_期货日内交易几个问题的考证
- 【问题解决】error: pathspec ‘XXX‘ did not match any file(s) known to git
- 常用语言注释使用格式
- [C题目]力扣876. 链表的中间结点
- [PHP] 高并发 php uniqid 不重复唯一标识符生成方案
- 超全的C++开发工程师面经
- 小二,来碗另类quot;反鸡汤quot;