最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[Unity中文課堂教程預(yù)告片] C#中級編程

2023-05-29 16:28 作者:學(xué)虛幻引擎的小王  | 我要投稿

[Unity中文課堂教程預(yù)告片] C#中級編程

01 創(chuàng)建屬性

  • propety屬性命名
  • 大寫開頭
  • prop 快速創(chuàng)建

?
創(chuàng)建屬性 P1 - 00:22
?

封裝成字段(fields)

作用:更好控制 何時、如何訪問

優(yōu)勢:

  1. 可以增加代碼
  2. 創(chuàng)建 自動實現(xiàn)的屬性 【prop 快速創(chuàng)建】


02 Ternary Operator

?
三元運算符 P2 - 00:01
?

message = health > 0 ? "Player is Alive": "Player is Dead";

使用場景:簡單的if-else 每個選項也是簡單的

03 靜態(tài)

  • 可以是變量和方法
  • 一處更改,所有更改

使用 static 聲明,表示這個屬于類,不屬于 類的實例


  • 這兩個案例,都是用于統(tǒng)計 游戲?qū)ο蟮臄?shù)量

方法 也可以是靜態(tài)的

Input.GetButton/Key/Axis 都是靜態(tài)方法,不用實例化就可以使用

注意:靜態(tài)方法里要用靜態(tài)變量

也可以是靜態(tài)的,如Input class

——————————————————

04 方法重載 Overloading

?
方法重載 P4 - 00:01
?

用同一個 函數(shù)名 實現(xiàn)不同的功能,如Add int / string

系統(tǒng)操作 3個步驟:精確匹配、最小更改、錯誤

05 通用 Generics

?
通用 P5 - 00:01
?

  • 特征:可以把 類型(type) 當(dāng)作 參數(shù)(parameter) 來傳遞
  • 作用:在不知道處理的具體數(shù)據(jù)類型時候 進行編程

GetComponent 就是一個 泛型方法

泛型方法的結(jié)構(gòu)

  • T 是占位符,用T 是習(xí)慣
  • 作用:作為基類,供繼承
  • 增加限制:where T:后有4種類型

泛型類的結(jié)構(gòu)

06 繼承 Inheritance

?
繼承 P6 - 00:02
?

定義:獲得父類的方法和參數(shù)

三種修飾符:public、protected、private

  • public:可以被任何類訪問
  • private:只能自己訪問,子類也訪問不了
  • protected:可以被子類訪問,不能被其他類訪問

結(jié)構(gòu):類名: 父類

繼承是 有層級的

Is-a 關(guān)系:

構(gòu)造函數(shù)

?
繼承 P6 - 05:10
?

07 多態(tài) Polymorphism

?
多態(tài) P7 - 00:04
?

多態(tài):如何使用多態(tài) (Polymorphism)、向上轉(zhuǎn)換 (Upcasting) 和向下轉(zhuǎn)換 (Downcasting) 在繼承的類之間創(chuàng)建強大而動態(tài)的功能。

  • 可以讓類有不同 態(tài)(types)
  • 作用:可以讓子類代替父類,叫 派生類(derived class)
  • 創(chuàng)建一個包含所有子類的集合
  • 比如 collider 包含盒子、橢球、網(wǎng)格 碰撞體

> 不是很懂這個部分

08 成員隱藏:如何在派生類中實現(xiàn)基成員的隱藏。

方法:recreating / re-declaring(重聲明)

代碼:使用 new 來 重聲明


?
成員隱藏 P8 - 01:42
?

問題:這里說,當(dāng)集合里有 父類、子類(隱藏了yell方法)那子類調(diào)用 yell 是新方法還是父類方法?

09 覆蓋:如何用子類的成員覆蓋基類的成員。

?
覆蓋 P9 - 00:01
?

Overriding

  • 定義:子類 修改父類方法
  • 直接寫 同名方法,unity 會報錯
  • 代碼:virtual(父類) 和 override(子)


使用 base.Yell(); 可以調(diào)用父類的方法


10 接口:如何創(chuàng)建接口并在類中實現(xiàn)它們。

  • 定義:關(guān)于功能的協(xié)定(a contract on functionality)
  • 關(guān)鍵字 interface,接口命名 開頭有I+大寫名+able(非強制性)
  • 公開
  • 優(yōu)勢:使用多個接口,但不能繼承多個類,比如 車和墻沒有關(guān)聯(lián),但都可以被破壞,所以使用 IDamageable 接口使用相關(guān)功能


11 擴展方法:如何創(chuàng)建、實現(xiàn)和調(diào)用擴展方法。

?
擴展方法 P11 - 00:02
?

Extension

  • 功能:向類添加功能,不用更改原始類型(比如內(nèi)置函數(shù))
  • 位置:非泛型、靜態(tài)類里
  • 區(qū)別于靜態(tài):使用 this 關(guān)鍵字

使用:擴展的方法,成為原方法的一部分


12 命名空間:如何創(chuàng)建和使用命名空間來組織您的類。

  • 定義:命名空間類似 類的容器,用來組織腳本,即讓編輯器建議的類 更有條理
  • 把類放入 命名空間,用命名空間語法包裹

三種方法使用 命名空間的方法

  • 腳本頭 using xxxNamespace;
  • 使用 命名空間名.方法
  • 把類放入 命名空間【不建議】,除非也要把方法放入命名空間

13 列表和字典:如何創(chuàng)建和使用列表和字典集合。

  • 泛型集合
  • List:動態(tài)大小

使用 Genneric【泛型?】

使用

這里為什么是<BadGuy>?

功能:索引[0], 計數(shù)(count),remove,removeat,insert,sort【基于 ICoumarable 接口】

字典:鍵值對,KVP

> 字典和列表是可以不提前確定 數(shù)據(jù)量的數(shù)據(jù)類型


14 協(xié)程:如何創(chuàng)建協(xié)程并使用它們來實現(xiàn)復(fù)雜的行為。

  • 定義:按時間間隔來執(zhí)行的函數(shù)。(a function that is executed in intervals)
  • 配合 yield 使用,有斷點,用于表示 用于控制協(xié)程的執(zhí)行流程,并在協(xié)程暫停時指定何時恢復(fù)執(zhí)行
  • yield return null;,可以使協(xié)程讓出當(dāng)前幀的執(zhí)行權(quán),讓游戲引擎進行下一幀的更新,從而保持游戲的流暢性
  • 優(yōu)勢:不用寫 Update,也不用創(chuàng)建任何計時器,就可以寫 時間相關(guān)的函數(shù)

協(xié)程和屬性結(jié)合

公開屬性(property)


  • 環(huán)境 點擊觸發(fā)協(xié)程
  • 物體 協(xié)程控制運動

里面有 屬性、協(xié)程等編程技巧


15 四元數(shù):如何利用四元數(shù)系統(tǒng)來管理游戲?qū)ο蟮男D(zhuǎn)。

功能:處理旋轉(zhuǎn)的好工具

  • x,y,z,w
  • 管理旋轉(zhuǎn):歐拉角
  • 問題:歐拉角遵循 萬向節(jié)鎖(gimbal lock),會阻礙增量旋轉(zhuǎn)
  • 措施:使用 四元數(shù)
  • 應(yīng)用
  • Quaternion.LookRotation(Vector3 變量),類似 lookat


  • lerp\ slerp
  • lerp 均勻差值
  • slerp 在曲線上差值,先慢后快


  • 特殊數(shù):Quaternion.inentity() 0,0,0,0,

歐拉角、萬向節(jié)問題,四元數(shù)的解決方案


16 委托: 如何創(chuàng)建和使用委托在腳本中提供復(fù)雜的動態(tài)功能。

  • 調(diào)用多個方法
  • 功能:創(chuàng)建 可靠且復(fù)雜的行為(robust and complex behaviors),可看作函數(shù)的
  • 一個委托 調(diào)用兩種方法,動態(tài)調(diào)用函數(shù)
  • 容器,可被傳遞或像變量一樣使用
  • 變量 包含數(shù)據(jù)
  • 委托 包含函數(shù)
  • 代碼:關(guān)鍵字 delegate


  • 多播(multicasting):組合使用多個 函數(shù)

在委托執(zhí)行前,執(zhí)行是否為空的檢查,減少報錯


17 特性:使用特性可以將其他行為附加到所創(chuàng)建的方法和變量。在本視頻中,您將學(xué)習(xí)屬性的格式以及如何使用“Range”和“ExecuteInEditMode”屬性。

?
特性 P17 - 00:02
?

Attributes

  • 功能:用于附加信息 在方法、變量、類上。
  • [Range]:用來控制變量范圍,不影響腳本其他部分


  • [ExecuteInEditMode]:用來讓腳本 在未運行場景時就執(zhí)行,
  • 放在腳本最開頭


18 事件:如何使用事件創(chuàng)建動態(tài)的“廣播”系統(tǒng)。

  • 定義:事件是特殊的委托,用來提醒其他類發(fā)生了某個事件。
  • 廣播機制
  • 代碼:EventManager
  • 使用靜態(tài)事件
  • 代碼:TeleportScript 訂閱者
  • 將 Teleport做訂閱和退訂操作
  • Teleport 也是類似 委托
  • 退訂,很重要
  • EventManager 只用管 事件本身和事件觸發(fā)器
  • TeleportScript 訂閱者 不用管其他訂閱者
  • 事件 有內(nèi)在的安全性,委托沒有,事件 其他函數(shù)只能對事件進行 訂閱和退訂,委托可以進行覆蓋等


——————————————————

委托,包含函數(shù)

多廣播

Protected 可以在子類獲得,不能在其他 地方獲得



[Unity中文課堂教程預(yù)告片] C#中級編程的評論 (共 條)

分享到微博請遵守國家法律
贵溪市| 哈尔滨市| 丹东市| 彭阳县| 元谋县| 西吉县| 大城县| 五华县| 大埔县| 呼和浩特市| 中山市| 大关县| 温州市| 奉新县| 都昌县| 金华市| 瑞昌市| 岳西县| 扎兰屯市| 乌拉特前旗| 洪泽县| 金秀| 沙坪坝区| 黄石市| 平原县| 城步| 文水县| 枝江市| 万宁市| 奉贤区| 绵阳市| 武冈市| 麟游县| 永登县| 嘉黎县| 广州市| 景泰县| 泽州县| 全椒县| 勃利县| 大安市|