色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > unity3D中的C#編程入門

unity3D中的C#編程入門 時間:2018-09-28      來源:未知

第一:Unity3D中的C#腳本與.net中的C#寫法的區別

1. Inherit from MonoBehaviour

繼承自MonoBehaviour

所有的行為腳本必須從MonoBehaviour繼承(直接的或間接的).在JavaScript 中這個是自動完成的,但是在C#或Boo中,必須顯示注明.如果你通過Asset -> Create -> C Sharp/Boo Script創建腳本,系統模版已經包含了必要的定義.

public class NewBehaviourScript : MonoBehaviour {...} // C#

class NewBehaviourScript (MonoBehaviour): ... # Boo

2. Use the Awake or Start function to do initialisation.

使用Awake或Start函數初始化.

Awake和Start的不同之處在于,Awake是在加載場景時運行,Start是在第一次調用Update或FixedUpdate函數之前被調用,Awake函數運行在所有Start函數之前.

3. The class name must match the file name.

類名字必須匹配文件名.

JavaScript中類名被隱式的設置為腳本的文件名(不包含文件擴展名).在C#和Boo中必須手工編寫.

4. Coroutines have a different syntax in C#.

C#中協同程序有不同的句法規則.

Coroutines必須是IEnumerator返回類型,并且yield用yield return替代.

using System.Collections;

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

// C# coroutine // C# 協同程序

IEnumerator SomeCoroutine () {

// Wait for one frame // 等一幀

yield return 0;

// Wait for two seconds // 等兩秒

yield return new WaitForSeconds (2);

}

}

5. Don't use namespaces.

不要使用命名空間

目前Unity暫不支持命名空間.或許未來版本會有.

6. Only member variables are serialized and are shown in the Inspector.

只有序列化的成員變量才能顯示在檢視面板

私有和保護變量只能在專家模式中顯示.屬性不被序列化或顯示在檢視面板.

7. Avoid using the constructor.

避免使用構造函數

Unity3D C#腳本初始化不要放到構造函數中,而是放到Start()方法中。

不要在構造函數中初始化任何變量.要用Awake或Start函數來實現.即便是在編輯模式,Unity仍會自動調用構造函數.這通常是在一個腳本編譯之后,因為需要調用腳本的構造函數來取回腳本的默認值.我們無法預計何時調用構造函數,它或許會被預置體或未激活的游戲對象所調用.

單一模式使用構造函數可能會導致嚴重后果,會帶來類似隨機的空參數異常.

因此,如果你想實現單一模式不要用構造函數,要用Awake函數.事實上,你沒必要在繼承自MonoBehaviour的類的構造函數中寫任何代碼. Unity3D C#腳本 get/set寫法屬性不被識別,直接public字段就能當屬性用,private或者不寫修飾符就是私有字段。

8 .腳本中文問題:代碼中有中文的話會有亂碼問題。到資源管理器中打開項目的Assets文件夾(或點右鍵Show In Explorer),用unity3d目錄下的Editor\Data\Tools\UniSciTE下的UniSciTE.exe打開cs文件,File→Encoding改為UTF-8 with BOM,敲個空格造成修改,然后保存即可(可以修改cs文件打開方式更簡單)。好一開始就修改編碼,否則會很麻煩。

完整的代碼:

第二:這里基本講解一下當打開一個腳本自帶的兩個函數Start、和Update的用法和意思

1.Start

對于這個函數我想不用多講,大家從字面意思就能理解,程序開始執行時調用的函數。上面提到Unity3D中初始化不能放在構造函數中要放到Start函數中。從某種意義上講可以理解為Unity3D把傳統的構造函數用這里的Start來替換了(這里完全屬于個人理解如果不理解不正確希望大神指出)。所以我們把Start理解為構造函數自然就容易理解為什么初始化要放到Start中了。這個函數主要用于對一些游戲資源的初始化用的。我相信這個函數大家容易理解,這里都不多講了。 重點看下面一個。

2.Update

這個函數可以說是一個核心函數。這里先問一下?您知道什么是幀的概念嗎?如果處理過視頻、弄過ps、flash之類的做動態的視頻或者動畫的朋友可能對這個幀比較了解。我這里簡單描述一下幀的概念。大家先回想一下很久以前的那種電影是怎么做的?

沒錯就是你看到的這樣一張一張連接而成的,然后快速瀏覽每一張就形成了動畫。我們現在看到的視頻、Gif等等一些都是類這種電影的膠片一張一個圖像一個圖像拼接的,然后每秒播放不低于多少張就會形成動畫。講了這么多那什么是幀呢?幀就可以形象的理解為這電影膠卷的每一個圖片。

我這里引用一下百度百科

幀——就是影像動畫中小單位的單幅影像畫面,相當于電影膠片上的每一格鏡頭。 一幀就是一副靜止的畫面,連續的幀就形成動畫,如電視圖象等。

你這時就會問講這么多廢話,Update到底是怎么回事還沒說呢?先別忙,如果您對幀這個概念不熟悉那么你對這個函數的理解就會還停留在.net中的事件驅動的那個機制。從字面理解Update就是刷新、更新的意思,那它刷新什么更新什么呢?我們用的Unity3d程序可以看作就是一個電影,當你一運行它,他就開始一幀一幀開始放映,每播放一幀就會調用一下這個Update函數。還有另一個函數fixupdate 是固定時間反復刷新,固定時間可以在Edit-> Project Settings ->Time進行設置。

Debug.Log()函數可以在程序中增加打印,在Console面板可以看打印輸出,方便程序定位。

上一篇:Unity3D基礎—基本物體和基本組件介紹

下一篇:javascript閉包闡述

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 日韩美精品 | 少妇高潮太爽了在线观看免费 | 免费精品无码AV片在线观看 | 久久精品免费一区二区喷潮 | 最近看过的日韩成人 | 国产AV永久无码精品网站 | 女人黄色一级片 | 亚洲无人区码一码二码三码的特点 | 蜜桃影片在线播放网站免费观看 | 国产精品亚洲а∨无码播放 | 漂亮人妻被强玩波多野结衣 | 亚洲精品国产福利一二区 | 日韩AV高潮喷水在线观看 | 性夜夜春夜夜爽A片 | 免费欧洲毛片A级视频老妇女 | 国产精品久久久久久久久无码日本蜜乳 | 欧美老熟妇乱子伦视频 | 麻豆安全免费网址入口 | 色77久久综合网 | 八区精品色欲人妻综合网 | 被绑在机器上强行高潮的视频 | 在线天堂中文新版最新版 | 久久人妻无码毛片A片麻豆 最近韩国动漫hd免费观看 | 日本人妻巨大乳挤奶水免费 | 警花av一区二区三区 | 国产精品成人免费视频网站 | 久久丫忘忧草产品 | 99热精品国产三级在线 | 好男人在线观看免费视频www | 在线观看中文 | 国产精品第69页 | 日本人妻出轨中文字幕 | 天堂AV无码大芭蕉伊人AV | 熟妇与小伙子露脸对白 | 日本特黄a级高清免费大片 人妻慢慢放弃抵抗开始迎合 | 抽插丰满内射高潮视频 | 国内精品久久久久久不卡影院 | 日韩免费观看高清 | 国产精品卡一卡二卡三 | 免费无遮挡又黄又爽网站 | 亚洲色自偷自拍另类小说 |