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

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

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

相关文章

Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986

问题 24-Mar-2017 23:43:21.300 INFO [http-apr-8001-exec-77] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalAr…

Linux Kernel Oops异常分析

0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常异常地址是否在stack附近,如果相邻&#xff0c…

Centos7.5 VMtools的安装与卸载

一、安装1、自带tools: 选择VMware工具栏 > 虚拟机 > 安装VMtools2、挂载光驱3、tar -zxvf VMwareTools-10.3.2-9925305.tar.gz(这里以tar文件为例)4、切换到目标目录,执行(一定要使用root权限执行)…

gitter 卸载_最佳Gitter渠道:开发人员工具

gitter 卸载by Gitter通过吉特 最佳Gitter渠道:开发人员工具 (Best Gitter channels: Developer Tools) Developer tools have become essential to any kind of serious software development, also in the open source setting. They can ease the daily develop…

java 过滤脚本_我写的得到天气的Java代码,其中有过滤脚本和过滤HTMLtag的函数。...

public class WeatherFilter{private String html;private String target"http://weather.news.sohu.com/query.php?city北京";public WeatherFilter()throws Exception{this(null);}public WeatherFilter(String targetIn)throws Exception{if(targetIn!null)this.…

【懒癌发作】收集各种懒癌发作时用程序写作业的程序

updata:20170621 好的,已经是准高一了,现在看起来太蠢了。。。 -------------------------------------------------------------------------------------- 要真正的运用,程序一定是要来解决实际问题的——比如作业(懒就直说&…

50欧姆线设计 高频pcb_硬件设计基础100问(三)

硬件基础知识问答今天依旧是节前知识储备哦,jacky大神整理的硬件基础知识很细致,第三弹学起来!01 1、晶体管基本放大电路有共射、共集、共基三种接法,请简述这三种基本放大电路的特点。共射:共射放大电路具有放大电流和…

如何正确实现 Java 中的 HashCode

相等 和 Hash Code 从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性。如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用在细微处去提升性能的。 大部分的数据结构使用equals去检查是否他们包含一个元素。例…

一亿小目标成就_成就卓越的一种方式:自我选择

一亿小目标成就by Prosper Otemuyiwa通过Prosper Otemuyiwa 成就卓越的一种方式:自我选择 (One way to Greatness: Pick Yourself) I’ve heard many people say this: “I want to be great”, but most people only just have wild thoughts & imaginations …

java操作文件爱女_Java的IO操作---File类

目标1)掌握File类作用2)可以使用file类中方法对文件进行读写操作。File类唯一与文件有关的类。使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法。public File(String pathname);实例化File类的时候,必须设置好路径。…

openssl创建私有ca

openssl创建私有ca1.ssl大概内容PKI:公钥基础设施结构CA:证书权威机构,PKI的核心CRL:证书吊销列表,使用证书之前需要检测证书有效性证书存储格式常见的X509格式包含内容 公钥有效期限证书的合法拥有人证书该如何使用CA的信息CA签名…

查询显示注释_SQL的简单查询

1.基本的查询语句-- *代表查询所有的列select * from <表名>;distinct表示列中不包括重复的值&#xff0c;例如select distinct 姓名&#xff1b;如果是select distinct 姓名,学号&#xff1b;则表示姓名和学号都重复的值才会显示。as为列设定别名&#xff0c;例如select…

【AC自动机】【数据结构】【树】【Aho-Corasick automation】AC自动机理解(入门)...

引入 我们首先提出一个问题&#xff1a; 给出n个串每个串的长度≤m 然后给出一个长度为k的串&#xff0c;询问前n个串中有多少个是匹配成了的 暴力搜索 这题不是sb题目吗&#xff1f; 随随便便O(kmn)跑过。 。。。。 n10000 m50 k1000000 。。。。 好吧——我们用AC自动…

域控dns无法解析域控_域注册商,DNS和托管

域控dns无法解析域控by ᴋɪʀʙʏ ᴋᴏʜʟᴍᴏʀɢᴇɴ由ᴋɪʀʙʏᴋᴏʜʟᴍᴏʀɢᴇɴ 域名注册商&#xff0c;DNS和托管 (Domain registrars, DNS, and hosting) 如何正确设置网站 (How to set up your website the right way) It took me a while to set up the infras…

java 栈空间_初学JAVA——栈空间堆空间的理解

1.Person pangzi; //这是在“开拓空间”于栈空间pangzinew Person(); //这是赋值于堆空间上两步就是在做与空间对应的事。2.值类型直接存入栈空间&#xff0c;如AF&#xff0c;引用类型存入堆空间&#xff0c;在栈空间存有“索引地址”&#xff0c;如当需要B时&#xff0…

二进制安装kubernetes v1.11.2 (第八章 kube-apiserver 部署)

继续上一章部署。 八、部署kube-apiserver组件 使用第七章的haproxy和keepalived部署的高可用集群提供的VIP&#xff1a;${MASTER_VIP} 8.1 下载二进制文件&#xff0c;参考 第三章  8.2 创建 kubernetes 证书和私钥 source /opt/k8s/bin/environment.sh cat > kubernetes-…

element手机验证格式_vue封装 element-ui form表单验证 正则匹配手机号 自定义校验表格内容...

效果image.png在methods中//检查手机号isCellPhone(val) {if (!/^1(3|4|5|6|7|8)\d{9}$/.test(val)) {return false;} else {return true;}}在template中v-model"forgetForm.phone"type"text"auto-complete"off"placeholder"请输入你的手机…

multi-mechanize error: can not find test script: v_user.py问题

从github上下载&#xff0c;安装multi-mechanize&#xff0c;新建工程&#xff0c;运行工程报错。 环境&#xff1a; win7-x64, python 2.7 multi-mechanize can not find test script: v_user.py 查看了github上的工程&#xff0c;项目无人维护&#xff0c;这个问题2016年11月…

@RequestMapping 用法详解之地址映射

引言&#xff1a; 前段时间项目中用到了RESTful模式来开发程序&#xff0c;但是当用POST、PUT模式提交数据时&#xff0c;发现服务器端接受不到提交的数据&#xff08;服务器端参数绑定 没有加任何注解&#xff09;&#xff0c;查看了提交方式为application/json&#xff0c; 而…

我的第一个网页 代码_我在免费代码营的第一个月

我的第一个网页 代码by Elliott McNary埃利奥特麦克纳里(Elliott McNary) 我在免费代码营的第一个月 (My First Month At Free Code Camp) I wanted to build an app that would help artists to make more money.我想开发一个可以帮助艺术家赚更多钱的应用。 I had a clear …