U3D遊戲開發菜鳥面試經歷日記(一)

2021-09-17 22:34:57 字數 1834 閱讀 8286

日期:2019/4/10  wpx

被問到的問題:

1.自我介紹

2.為什麼辭職?

3.懂哪些排序演算法? 冒泡、選擇、快排、插入

4.解釋一下快速排序?  根據任一被選取的資料,降比他小的資料放他左邊,大的放其右,重複這個過程。

5.這些演算法的時間複雜度? 冒泡、選擇、插入 最好情況都是o(n)快排最好o(n*log2n) 最差都是o(n2

演算法最好時間

最差時間

平均是否穩定

冒泡o(n)

o(n2

o(n2)是選擇

o(n)

o(n2

o(n2)是插入

o(n)

o(n2

o(n2)是快速

o(n*log2n)

o(n2

o(n*log2n)

否6.手寫快速排序:

using system; 

using system.collections.generic; 

using system.linq; 

using system.text;

namespace test

;sort(array, 0, array.length - 1);

console.readline();

}/**一次排序單元,完成此方法,key左邊都比key小,key右邊都比key大。

private static int sortunit(int array, int low, int high)

/*左邊都比key小,右邊都比key大。//將key放在游標當前位置。//此時low等於high */

array[low] = key;

foreach (int i in array)

\t", i);

}console.writeline();

return high;

}    

/**快速排序 

*@paramarry 

*@return */

public static void sort(int array, int low, int high)}} 

7.a*尋路演算法是如何實現?

核心公式:f=g+h

f - 方塊的總移動代價

g - 開始點到當前方塊的移動代價(拓展: g = 移動代價 * 代價因子)

h - 當前方塊到結束點的預估移動代價(即為當前點到結束點的曼哈頓距離)

a星演算法還需要用到兩個列表:

開放列表- 用於記錄所有可考慮選擇的格仔

封閉列表- 用於記錄所有不再考慮的格仔

提前將尋路區域分為若干網格,計入障礙物代表網格,在確定了尋路的開始點,結束點的情況下,假定每個方塊都有乙個f值,該值代表了在當前路線下選擇走該方塊的代價。

而a星尋路的思路很簡單:從開始點,每走一步都選擇代價最小的格仔走,直到達到結束點。

a星演算法偽碼:

a、將開始點記錄為當前點p

b、將當前點p放入封閉列表

c、搜尋點p所有鄰近點,假如某鄰近點既沒有在開放列表或封閉列表裡面,則計算出該鄰近點的f值,並設父節點為p,然後將其放入開放列表

d、判斷開放列表是否已經空了,如果沒有說明在達到結束點前已經找完了所有可能的路徑點,尋路失敗,演算法結束;否則繼續。

e、從開放列表拿出乙個f值最小的點,作為尋路路徑的下一步。

f、判斷該點是否為結束點,如果是,則尋路成功,演算法結束;否則繼續。

g、將該點設為當前點p,跳回步驟c。

(此題答案複製自

U3D 遊戲開發邏輯設計

1 總體思想,高內聚,低耦合,按功能劃分,將整體功能劃分成單一功能,每個功能單獨實現。2 依據單一職責原則,每個功能只管自己的部分,總的控制類來控制各個功能中的互動類。例如 將某個單一功能用3個 檔案來控制,ui,data,service,ui只管介面,data只管存資料,service來改變dat...

U3D學習 跑酷遊戲

1.製作場景cube預製件 新建cube 製作材質球 改變其顏色等 將改變好的cube放入assets中成為預製件用於製作遠景 以相同方法製作近景 建立empty gameobject命名managers 在managers下建立empty gameobject命名skylinenearmanage...

u3d遊戲客戶端架構

主要是mvc架構,m層為資料層,兩個用途 1儲存資料 2傳送資料更新資訊 v層為檢視層,兩個用途 1接受使用者從介面上的操作 2根據m層的資料顯示相應的介面 c層為控制層,兩個用途 1處理和介面無關的 邏輯 2接受和處理網路資料 繼續 按照自己的經驗,遊戲中的mvc架構有兩種思想,1,以mvc架構為...