日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

Unity游戏开发之C#快速入门

發(fā)布時間:2023/12/10 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity游戏开发之C#快速入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C#是微軟團隊在開發(fā).NET框架時開發(fā)的,它的構(gòu)想接近于C、C++,也和JAVA十分相似,有許多強大的編程功能。
個人感受是C#吸收了眾多編程語言的優(yōu)點,從中可以看到C、C++、Java、Javascript、python的影子,設(shè)計思想都是相通的(過段時間一定要看看設(shè)計模式),對比遷移地學習基本只需要記關(guān)鍵字、語法和包的用法。我是為了unity游戲開發(fā)課程學的,不是很深入,某些細節(jié)可能也沒有涉及到。 就先復(fù)習了以前學C++、java的筆記,然后對照著簡單學了C#,會重點學unity中用到的包。

1.C#程序結(jié)構(gòu)

C# 中的關(guān)鍵組織結(jié)構(gòu)概念包括程序、命名空間、類型、成員和程序集
一個C#版HelloWorld直觀感受一下。

using System; //包含命名空間 namespace HelloWorldApplication //聲明一個命名空間 {class HelloWorld //類聲明{static void Main(string[] args) //Main入口函數(shù){/* 我的第一個 C# 程序*/Console.WriteLine("Hello World"); //輸出Console.ReadKey();}} }

與 Java 不同,文件名可以不同于類的名稱。

2.數(shù)據(jù)類型、類型轉(zhuǎn)換

  • 值類型 (從System.ValueType中派生)
    bool、byte、char、decimal、double、float、int、long、sbyte、short、uint、ulong、ushort、結(jié)構(gòu)體struct、枚舉enum
  • 引用類型
    引用類型不包含存儲在變量中的實際數(shù)據(jù),而是包含對變量的引用。
    內(nèi)置的引用類型有:object、dynamic 和 string。
    自定義的有:類class C {...}、接口interface I {...}、委托delegate int D(...)、數(shù)組int[] 和 int[,]。
    對象類型變量的類型檢查是在編譯時發(fā)生。
    動態(tài)類型變量的類型檢查是在運行時發(fā)生。
    @引號的字符串會將轉(zhuǎn)義字符()當作普通字符,可以任意換行,換行符及縮進空格都計算在字符串長度之內(nèi)。
    字符串的占位符為{},如:String.Format(“{0},{1}”,c,d);
  • 指針類型
    指針類型變量存儲另一種類型的內(nèi)存地址。
    例如:char* cptr;
  • 可空類型
    null是引用類型變量的默認值,null不允許被賦給值類型的變量,但有時我們希望值類型的數(shù)據(jù)可以為null,就有了可空類型。

    int a = null; // 非法int? a = null; // 合法,可空類型Nullable<int> i = new Nullable<int>(3);//可空類型

    合并運算符(??)定義了一個預(yù)設(shè)值,以防可空類型的值為null。
    如:

    double? num1 = null; double num3 = num1 ?? 5.34; // num1 如果為空值則返回 5.34

類型轉(zhuǎn)換如:i = (int)d;i.ToString();s.ToBoolean();
C#的運算符,判斷、循環(huán)語句和C++的語法基本一致,不做過多說明。

3.方法、類、接口、泛型

一個 訪問修飾符 定義了一個類成員的范圍和可見性。
C# 支持的訪問修飾符如下所示:
public:所有對象都可以訪問;
private:對象本身在對象內(nèi)部可以訪問;
protected:只有該類對象及其子類對象可以訪問
internal:同一個程序集的對象可以訪問;
protected internal:訪問限于當前程序集或派生自包含類的類型。

C# 中定義方法:

<Access Specifier> <Return Type> <Method Name>(Parameter List) {Method Body }

C#中的類和java是很像的,不過繼承的時候用的:,而不是extends。
類中也有構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員(static)。

class Line{private double length; // 線條的長度public Line() // 構(gòu)造函數(shù){Console.WriteLine("對象已創(chuàng)建");}~Line() //析構(gòu)函數(shù){Console.WriteLine("對象已刪除");}public void setLength( double len ){length = len;}}

類的繼承:

class <派生類> : <基類1>,<基類2>,... {... }

接口的繼承和實現(xiàn)也是用的冒號:

interface IMyInterface : IParentInterface { } class InterfaceImplementer : IMyInterface {//接口中方法的實現(xiàn) }

泛型:
using System.Collections.Generic;
GenericList<float> list1 = new GenericList<float>();
C#的泛型和C++模板類似,但也有不同
泛型可以通過使用 where 上下文關(guān)鍵字指定約束。

4.域(Field)、屬性(Peoperty)、索引器(Indexer)

域和屬性的區(qū)別

區(qū)別屬性域
邏輯性邏輯字段,在改變字段時
能改變對象的其他一些狀態(tài)
不經(jīng)過邏輯處理
存儲性不占用實際內(nèi)存占內(nèi)存空間及位置
訪問性由get、set訪問器決定讀寫屬性由訪問修飾符決定
安全性增加了數(shù)據(jù)的安全性不太安全

為了實現(xiàn)對字段的封裝,保證字段的安全性,而產(chǎn)生了屬性,其本質(zhì)是方法,通常是配合使用的,如下:

class Student{private string name = "not known";// 聲明類型為 string 的 Name 屬性public string Name{get{return name;}set{name = value;}}}

索引器

索引器(Indexer)允許一個對象可以像數(shù)組一樣被索引。
和屬性類似,可使用 get 和 set 訪問器來定義索引器,而索引器返回或設(shè)置對象實例的一個特定值。

5.委托、匿名函數(shù)、事件

委托

委托可以理解為函數(shù)指針,是對函數(shù)原型的包裝。
但相比于函數(shù)指針,委托面向?qū)ο?#xff0c;類型更安全,有多播的功能。
通過委托,可以將方法視為可分配給變量并可作為參數(shù)傳遞的實體。

例如:

  • 申明委托:delegate void TestDelegate(string s);
    ??可以再任何地方聲明委托,可以帶訪問修飾符。
    ??委托不關(guān)心引用的方法的類,只關(guān)心引用的方法是否與委托有相同的參數(shù)和返回類型。
  • 實例化委托:TestDelegate testdelA = new TestDelegate(M);
    ??用某個方法實例化這個委托,也就是說,使函數(shù)指針指向一個方法。
  • 調(diào)用委托:testdelA("Hello");
  • 委托可以多播
    ??委托間可以使用+、-來組合、移除,委托判等是根據(jù)它引用的方法判斷。
  • 泛型委托:delegate T NumberChanger<T>(T n);

匿名函數(shù)與Lambda表達式

匿名方法(Anonymous methods) 提供了一種傳遞代碼塊作為委托參數(shù)的技術(shù)。
匿名方法沒有名稱只有主體,不需要指定返回類型,它是從方法主體內(nèi)的 return 語句推斷的。
匿名函數(shù)與委托的使用步驟相同,實例化時格式不同,格式如下:
委托名 實例變量 =delegate(形參列表){方法體};

Lambda表達式也是匿名函數(shù),語法更加簡潔:
(參數(shù)列表) => {方法體}

事件

事件使用 發(fā)布-訂閱(publisher-subscriber) 模型。
在類的內(nèi)部聲明事件,首先必須聲明該事件的委托類型。例如:
public delegate void BoilerLogHandler(string status);
然后,使用 event 關(guān)鍵字聲明事件本身:
public event BoilerLogHandler BoilerEventLog;

6.C#常用類庫

System.Collections
集合(Collection)類是專門用于數(shù)據(jù)存儲和檢索的類。常用的有:

集合類常用方法
動態(tài)數(shù)組
ArrayList
Add(item)、Clear()、Contains()、IndexOf()、
Remove()、Sort()、Reverse()
哈希表
Hashtable
Add(key,value)、Clear()、Remove(key)、
ContainsKey(key)、ContainsValue(value)
堆棧
Stack
Clear()、Contains()、Peek()、 Pop()、PushToArray()
隊列
Queue
Clear()、Contains()、Dequeue()、
Enqueue()、ToArray()、TrimToSize()
點陣列
BitArray
排序列表
SortedList

個人筆記型博客,仔細學習可移步C#官方文檔或菜鳥教程-C#教程。

轉(zhuǎn)載于:https://www.cnblogs.com/mthz/p/unity0.html

總結(jié)

以上是生活随笔為你收集整理的Unity游戏开发之C#快速入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。