主頁 >  其他 > [Unity面試] 2020年Unity面試題分享

[Unity面試] 2020年Unity面試題分享

2020-11-20 15:41:42 其他

第一次發布時間:9月12日
最近修改時間:11月18日

2020年9月面試題分享

  • 一、Unity腳本基礎
  • 二、Unity性能優化

一、Unity腳本基礎

1、Unity3D中的協程(coroutine),C#執行緒和行程之間的區別是什么?

簡記:協程和執行緒區別
協程(協同程式Coroutine): 同一時間只能執行某個協程,開辟多個協程開銷不大,協程適合對某任務進行分時處理, Unity提供了StartCoroutine來開啟協程,當你在 StartCoroutine 的函式體里處理一段代碼時,利用 yield陳述句等待執行結果,這期間不影響主程式的繼續執行,可以協同作業,

舉個例子:LoadLevelAsync(異步加載關卡)后臺加載場景的方法,允許你在后臺加載新資源和場景,再利用協同,你就可以在前臺用 loading 潭訓影片提示玩家游戲處于加載中,同時后臺協同處理加載的事宜,

行程progress:行程是執行緒的容器,
執行緒thread: 同一時間可以同時執行多個執行緒,開辟多條執行緒開銷很大,執行緒適合多任務同時處理,并發并行,
協程:具體多回傳點的方法,時間分片(幀),Unity只能是單執行緒,只能在主執行緒呼叫Api,物件
在這里插入圖片描述


2、Unity3D 是否支持寫成多執行緒程式?如果支持的話需要注意什么?
支持,如果掌握的Unity多執行緒的方法,就可以從容的使用多個硬體處理器或處理很難劃分管理資料塊,
【注意】
1、只能從主執行緒中訪問 Unity3D 的組件,物件和 Unity3D 系統呼叫
2、如果同時你要處理很多事情或者與 Unity 的物件互動,可以用 thread,可以通過排序來解決一個執行緒改變一個資料的問題,否則使用協程coroutine,
3、C#中有 lock 這個關鍵字,以確保只有一個執行緒可以在特定時間內訪問特定的物件

3、OnEnable、Awake、Start 運行時的發生順序?哪些可能在同一個物件周期中反復的發生?
Awake > OnEnable>Start 推薦看腳本生命周期順序
OnEnable可以在同一周期反復的發生
SetActive(true)就會反復觸發OnEnable事件
SetActive(false)就會反復觸發OnDisable事件

其中Awake函式一般用于實作單例模式;
OnEnable函式是在游戲物件可以呼叫時呼叫;
OnDisable是在游戲物件不可用時呼叫;
Start函式則是在場景中顯示該游戲物件前呼叫一次,用于開始設定物體屬性和渲染;
FixedUpdate函式具有固定更新頻率,一般進行游戲物件的物理引擎的更新;
Update函式則是渲染幀更新,每秒更新一定頻率;
LateUpdate函式是延遲更新,只有在每一幀的所有Update函式都執行完了過后才會執行;
而OnGUI函式則是在每一幀更新時呼叫,
在這里插入圖片描述
4、Unity3D 如何獲知場景中需要加載的資料?如何動態資源加載?
instantiate:最簡單的一種方式,以實體化的方式動態生成一個物體,

Assetsbundle:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中load某個object,unity官方推薦也是絕大多數商業化專案使用的一種方式,

Resource.Load:可以直接load并回傳某個型別的Object,前提是要把這個資源放在Resource命名的檔案夾下,Unity不管有沒有場景參考,都會將其全部打入到安裝包中

AssetDatabase.loadasset :這種方式只在editor范圍內有效,游戲運行時沒有這個函式,它通常是在開發中除錯用的,


5、Unity中碰撞器(Collider)和觸發器(Trigger)的區別?
碰撞器(Collider)有碰撞效果,IsTrigger=false,可以調OnCollisionEnter/Stay/Exit函式

觸發器(Trigger)沒有碰撞效果,isTrigger=true,可以呼叫OnTriggerEnter/Stay/Exit函式


6、U3D中,幾種施加力的方式,描述出來
首先需要物件要有rigidbody組件
Rigidbody.AddForce /AddForceAtPosition
2D Constant Force
Force/Relative Force/Torque


7、物體自旋轉使用的函式叫什么?物體繞某點旋轉使用函式叫什么?
transform.Rotate
transform.RotateAround


8、u3d 提供了一個用于保存讀取資料的類,(playerPrefs),請列出保存讀取整形資料的函式
PlayerPrefs類是一個本地持久化保存與讀取資料的類
PlayerPrefs類支持3中資料型別的保存和讀取,浮點型,整形,和字串型,
分別對應的函式為:
SetInt();保存整型資料;GetInt();讀取整形資料;
SetFloat();保存浮點型資料; GetFlost();讀取浮點型資料;
SetString();保存字串型資料; GetString();讀取字串型資料;


9、unity3d 從喚醒到銷毀有一段生命周期,請列出系統自己呼叫的幾個重要方法,
(init)Awake>OnEnable>Start > (Physic)FixedUpdate> (GameLogic)Update>Yield >LateUpdate>OnGui>OnDisable>OnDistroy


10、物理更新一般在哪個系統函式里?
FixedUpdate,每固定幀繪制時執行一次,和 update 不同的是 FixedUpdate 是渲染幀執行,如果你的渲染效率低下的時候 FixedUpdate 呼叫次數就會跟著下降,

FixedUpdate 比較適用于物理引擎的計算,因為是跟每幀渲染有關,
Update 就比較適合做游戲邏輯更新,
LateUpdate比較適合相機更新,update后更新,防止視角移動,游戲物件發生空幀未出現,


11、反向旋轉影片的方法是什么?
1.將影片速度調成-1
2.改代碼animation.speed=-1


12、用代碼實作第三人稱角色控制器?第一人稱角色控制器
大致思路:
攝像機與角色的距離范圍
攝像機旋轉、平移
滑鼠控制攝像機


13、獲取、增加、洗掉組件的命令分別是什么?
獲取:GetComponent
增加:AddComponent
洗掉:Destroy


14、Animation.CrossFade 是什么?
影片淡入淡出

15、Application.LoadLevel 命令作用是什么?
加載關卡,已棄用
SceneManager.LoadScene

16、調式記錄到控制臺的命令是什么?
Debug.Log();

17、編輯器類存放路徑是什么?
Asset/Editor

18、使用原生 GUI 創建一個可以拖動的視窗命令是什么?
GUI.DragWindow

19、localPosition 與 Position 的使用區別?
localPosition :自身坐標系,相對于父級的位置
Position :世界坐標系中的位置

20、Mathf.Round和Mathf.Clamp和Mathf.Lerp含義?
Mathf.Round:四舍五入
Mathf.Clamp:左右限值
Mathf.Lerp:插值

21、寫一個計時器工具,從整點開始,格式為00:00:00
分小時、分、秒

22、寫出 Animation 的五個方法
AddClip 將 clip 添加到名稱為 newName 的影片中,
Blend 在后續 time 秒中將名稱為 animation 的影片向 targetWeight 混合,
CrossFade 在后續 time 秒的時間段內,使名稱為 animation 的影片淡入,使其他影片淡出,
CrossFadeQueued 使影片在上一個影片播放完成后交叉淡入淡出,
IsPlaying 名稱為 name 的影片是否正在播放?
PlayQueued 在先前的影片播放完畢后再播放影片,
RemoveClip 從影片串列中移除剪輯,
Sample 對當前狀態的影片進行采樣,
Stop 停止所有使用該影片啟動的正在播放的影片,

23、用滑鼠實作在場景中拖動物體,用滑鼠滾輪實作縮放(用一個 Cube 即可)
在場景中添加一個Plan,Camera,Directional Light,Cube,添加兩個腳本一個掛在Camera上,另一個掛在Cube上,
1.滑鼠滾輪實作縮放:將攝像機的鏡頭拉近或者拉遠,調整攝像機的視角就可以實作2.滑鼠實作在場景中拖動物體:解決思路就是將世界坐標轉換成螢屏坐標,然后計算物體與滑鼠之間移動量,回圈滑鼠被按下操作,得到滑鼠的當前位置,加上計算好的移動量,將新的坐標賦值給物理就行了, 具體代碼實作:http://www.cnblogs.com/hewencong/p/4299722.html

24、<憤怒的小鳥>給予初速度以后,怎么讓小鳥受到重力和空氣阻力的影響而繪制拋物線軌跡,說出具體的計算方法
Vector3 v 代表初速度 v’代表現在的速度, 假設小鳥是沿的 z 軸也就是transform.forward 方向,運動的質量為 m,那么 v‘=v-new Vector3(0,mgt,ft),transform.Translate(v’)做的就是拋物線運動(g 為重力加速度不要用現實中的需要自己除錯,f 為阻力也要自己除錯
設定,t 為時間)

25、當游戲中需要頻繁創建一個物體時,我們需要怎樣做能夠節省記憶體?
1.使用預制體物件
2.使用物件池技術

26、碰撞檢測需要物體具備什么屬性?
能檢測碰撞發生的方式有兩種,一種是利用碰撞器,另一種則是利用觸發器

27、如何使子控制元件居中,如果使用UGUI怎么實作
錨點設定為中心

28、去掉敏感字的程式(手寫程式)
字串replace

29、寫出WWW的幾個方法
WWW.LoadFromCacheOrDownload:可被用于將Assets Bundles自動快取到本地磁盤
WWW.Dispose :釋放現有的 WWW 物件,
WWW.isDone:是否完成下載?(只讀)
WWW.progress:下載進度(只讀),

30、啟用MipMaps對記憶體的影響是?
增加約33%的記憶體,1/4 +1/16

31、采用Input.mousePosition來獲取滑鼠在螢屏上的位置
左下角為原點(0,0),右上角為(Screen.Height,Screen.Width)

32、Unity中銷毀GameObject的方式,簡述Destroy和DestroyImmediate的區別
Destroy銷毀訊息物件,記憶體中還是存在,只有記憶體不夠才被清除釋放記憶體
DestroyImmediate立即銷毀物件,并釋放記憶體

33、如何檢測物體是否被其他物件遮擋
射線檢測
EventSystem.IsPointerOverGameObject
是否具有給定 ID 的指標是否位于 EventSystem 物件上


二、Unity性能優化

lod 是什么,優缺點是什么
MipMap 是什么?作用?
當游戲中需要頻繁創建一個物體物件時,我們需要怎么做來節省記憶體,
如何優化記憶體?
動態加載資源的方式?和區別
請簡述一下物件池原理,什么情況下使用?
19.使用mipmap有什么好處?什么情況下使用?
Unity記憶體優化?GC垃圾回收
你認為unity在開發程序中哪些地方比較容易造成記憶體泄漏和記憶體泄漏問題?如何避免?
如何解決過多創建和洗掉物件帶來的卡頓問題
Unity資源加載的有幾種方式,簡述asset bundie
背包系統中只有20個格子,現在有總共有100個物體,除了顯示在視野中的20個外,對其他的處理方法?(注:將其他隱藏起來不可行,物件池得有具體的說明)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225542.html

標籤:其他

上一篇:vsts~CI/CD實作自動化編譯

下一篇:《我們不一樣團隊》第二次作業:教室借用系統專案開題報告

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more