Unity3D 上海某大型遊戲公司的基礎面試題

2021-06-20 21:16:00 字數 2040 閱讀 4324

**:

說出這麼乙個現象之後,接下來進入主題,分享上海某大型遊戲公司的乙個基礎測試題!

1.unity中碰撞器(collider)和觸發器(trigger)的區別?

碰撞器(collider)有碰撞效果,istrigger=false,可以呼叫oncollisionenter/stay/exit函式

觸發器(trigger)沒有碰撞效果,istrigger=true,可以呼叫ontriggerenter/stay/exit函式

2.物體發生碰撞的必要條件?

必須帶有collider碰撞器和rigibody剛體屬性或者人物控制器,其實人物控制器就包含了前兩者,另外乙個物體也要必須帶有collider,collider分類:網格碰撞器,盒子碰撞器,膠囊碰撞器,球型碰撞器,地形碰撞器!

3.charactercontroller和rigidbody的區別?

rigidbody具有完全真實物理的特性,而charactercontroller可以說是受限的的rigidbody,具有一定的物理效果但不是完全真實的。

4.物體發生碰撞時,有幾個階段,分別對應的函式?

三個階段,oncollisionenter/stay/exit函式

5.物體發生碰撞時,幾種施加壓力的方式,描述出來?

rigidbody.addforce/addforceatposition,都是rigidbody的成員函式

6.unity3d提供了幾種光源,分別是什麼?

共4種,directionallight、pointlight、spotlight、arealight(用於烘焙)

7.物理更新一般在哪個系統函式裡?

fixedupdate,每固定幀繪製時執行一次,和update不同的是fixedupdate是渲染幀執行,如果你的渲染幀效率低下的時候fixedupdate呼叫次數就會跟著下降。fixedupdate比較適合用於物理引擎的計算,因為是跟每幀的渲染有關。update就比較適合做控制。

8.移動相機動作在哪個函式裡,為什麼在這個函式裡。

lateupdate,是在所有的update結束後才呼叫,比較適合用於命令指令碼的執行。官網上例子是攝像機的跟隨,都是所有的update操作完才進行攝像機的跟進,不然就有可能出現攝像機已經推進了,但是視角裡還未有角色的空幀出現。

9.簡述一下prefab的用處?

在遊戲執行時例項化,prefab相當於乙個模板,對你已經有的素材、指令碼、引數做乙個預設的配置,以便於以後的修改,同事prefab打包的內容簡化了匯出的操作,便於團隊的交流。

10.簡述一下物件池,你覺得在fps遊戲裡哪些東西適合使用物件池?

物件池就存放需要被反覆呼叫資源的乙個空間,比如遊戲中要常被大量複製的物件,子彈,敵人,以及任何重複出現的物件。

1. 機槍兵在平時站立時,處於 空閒 狀態;

初始化狀態機,並將 空閒 狀態作為初始狀態放入狀態機堆疊中;狀態機堆疊:【空閒】

2. 機槍兵發現敵人,並且敵人在射程範圍內,機槍兵開始攻擊敵人;此時,機槍兵進入 攻擊 狀態;

進入 攻擊 狀態;狀態機堆疊:【攻擊】【空閒】

3. 敵人死亡,機槍兵停止攻擊;此時,機槍兵回到 空閒 狀態;

退出當前狀態;狀態機堆疊:【空閒】

4. 此時玩家發出進攻命令,此進攻命令是用a鍵點了遠處的乙個地面 place1 ,也就是沒有具體目標的進攻;此時,機槍兵進入 移動進攻 狀態;

進入 移動進攻 狀態;狀態機堆疊:【移動進攻】【空閒】

5. 在移動過程中,機槍兵發現了敵人,所以他要脫離原來的路徑,走向發現的敵人;此時,機槍兵進入 追擊 狀態;

進入 追擊 狀態;狀態機堆疊:【追擊】【移動進攻】【空閒】

6. 機槍兵和敵人的距離小於了自己的射程之後,機槍兵停下來,並且攻擊敵人;此時,機槍兵進入了 攻擊 狀態;

切換到 攻擊 狀態;狀態機堆疊:【攻擊】【移動進攻】【空閒】

7. 敵人死亡後,機槍兵重新尋路到place1,繼續前進;此時機槍兵回到步驟4,回到了 移動進攻 狀態。

退出當前狀態;狀態機堆疊:【移動攻擊】【空閒】

Unity3D遊戲開發

入門級unity安裝教程 一 unity五大面板 unity3d的介紹 1 介面 選單 面板 元件 unity5.x 編輯器介紹 unity開啟篇 一 滑鼠右鍵 wsadeq前後左右上下移動 shift加速移動 滑鼠右鍵旋轉檢視 滑鼠中鍵移動檢視 alt 右鍵縮放 alt 左鍵旋轉物體視角 q移動場...

Unity3D遊戲開發初探

1 如何在遊戲指令碼程式中建立物件而不是一開始就建立好物件?使用gameobject的靜態方法 createprimitive view code 其中在createcube方法中,使用gameobject.createprimitive方法來建立cube型別的遊戲物件例項,設定了它出現的座標並為它...

Unity 3D 坦克大戰遊戲收穫

功能很多的指令碼 通常情況下不能適應特殊情況 最好是乙個指令碼只做一件事情 這樣復用率會很高 乙個指令碼寫完以後很多地方都可以用 比如說 移動的指令碼 movement.cs 只處理監聽鍵盤按鍵 和 對應的移動處理 攻擊指令碼 attack 只處理攻擊 遊戲中 坦克的血量顯示就是用的ugui中的 s...