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.pswp.cn/news/396380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396380.shtml
英文地址,請注明出處:http://en.pswp.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 …