2019Unity3D開發工程師面試題

面試題總分類

---------------------------------------

|--繼承,封裝,多態,設計模式理解?---------|

|--網絡層級,tcp,udp,http,socket區別?---|

|--渲染管線,渲染流程,渲染機制------------|

|--優化,cpu,gpu,內存,drawcall,fps?-----|

---------------------------------------|

常見題

---------------------C#----------------------

值類型與引用類型區別?

存儲類型是棧和堆? 速度值類型存儲快 引用慢

簡述對繼承的理解?

一個類繼承另一個類 可以使用基類的方法和屬性 基類必須加virtual 子類加override

List和ArrayList區別?

泛型和非泛型

4種訪問修飾符的區別?

public 公共的 protected 自身和子類使用 private 私有的? internal 程序和程序集內部

面向對象三大特征?

封裝 繼承 多態

引用類型的基類?

System.Object

Ref和out區別?

傳遞引用 出參

接口和抽象類區別?

多繼承 抽象類不能? 接口不能實例化 抽象類間接實例化 接口完全抽象 抽象類部分抽象

String和StringBuilder區別?

修改的是再開辟一個內存空間 stringBuilder是在原有的內存空間修改

簡述常用設計原則?

單一 里氏代還 依賴倒轉 迪米特 接口隔離 合成復用 開閉原則

簡述常用設計模式?

單例 簡易工廠 對象池 觀察者 狀態機 外觀

List命名空間?

system.collections.Generic

二叉樹的前序中序后續

No

數組和鏈表區別?

有序? 長度固定 類型確定 增刪改查不方便 需要擴容? ··鏈表無序...

線程互斥的方法?()

lock? Monitor 是一種語法糖

軟件設計四大特性?

安全 復用 擴展 可測試

什么是MVC?

模型視圖分離控制器? 是一種設計模式

文件流的3種讀寫方式?

StreamReader

Stream.read

StringReader

BinaryaReader

TextReader

JIT和AOT?

justintime? 即時編譯 c# Java等托管語言 執行慢 安裝快 占用內存小

aot預先編譯? c++等? 執行快 安裝慢 占用內存大

觀察者的設計原則?

依賴倒轉

常用容器類?

list arriylist hashtable dictionary stack queue array LinkList

數組和list區別?

裝箱拆箱 不用指定長度 自動擴容

IO的關鍵字分別有哪些?分別有什么用?

Stream? 流? File 文件? Path 路徑 Directory 文件夾

同步和異步的區別?

兩方同時在線 阻塞 等待回復? 異步 相當于發消息 發完就可以執行其他程序

接口和委托區別?

接口約束方法 必須實現? 委托約束參數 參數類型必須相同

-------------------unity---------------------

Unity生命周期函數有哪些?

Awake OnEnable Start Update LateUpdate (FixedUpdate) OnDisable OnDestroy OnApplictionQuit

Unity光源有幾種?

1 平行光 2 點光源 3 聚光燈

Unity動畫有幾種?

關節動畫? 骨骼動畫 關鍵幀動畫

矩陣相乘的意義?

計算歐拉角 向量

自身坐標系和世界坐標系區別?

position localPosition 以自身坐標為坐標軸 世界原點為坐標軸

協程和線程區別?

協程不是線程 unity不支持多線程 在主線程開啟一段邏輯來輔助主線程執行 是模擬多線程的一種機制

異步加載場景的函數?

using UnityEngine.SceneManagement;//命名空間

SceneManager.LoadSceneAsync(1);//異步加載場景函數

SceneManager.LoadScene(0);//加載場景

unity增加刪除和獲取組件的方法?

AddConponent ()

Destroy()

GetComponent()

UGUI和GUI的區別?

可視化 美觀 GUI是腳本控制

編輯器的類放到哪個文件夾?

Editor

unity兩個場景之間互相傳值的方法。

DontDestroyOnLoad()

PlayerPrefs

material和SharedMaterial區別?

修改這個物體的材質? ShredMaterical修改使用這個材質的所有物體

碰撞器和觸發器區別?

碰撞有物理效果 觸發沒有

什么是DrawCall?

GPU把游戲場景內的的模型貼圖光照等信息收集起來發送給GPU計算的過程稱為一次drawcall

1個模型帶一個材質單通道shader渲染一次的過程是1個drawcall

.Net和Mono?

微軟開發的一個開發平臺 Mono是.net的開元跨平臺工具

點乘和叉乘?

點乘 計算角度 叉乘 可以計算法線

Unity支持的語言?

javascipt,C#,boo

Render,MeshRender和SkinnedMeshRender區別?

Reader,父類,負責渲染

MeshReader,網格渲染器,

SkinReader,蒙皮網格渲染器,每個模型的骨骼的骨關節,都有一個頂點,骨骼里有骨骼信息,骨骼可以牽引著蒙皮走

Animator的Layer有什么用?

層級遮罩 可以上半身播放一個動畫 下半身播放另一個動畫

什么是跨平臺?

直接在其他平臺上運行 不需要修改原代碼

Pingpong和Repeat?

12321 123123

Lerp,Slerp

插值? 圓滑(弧線)插值

動態加載資源的3中方式?

Resourse AssedBoundle WWW

矩陣相乘?(必要條件)

格式相同

獲取input,橫縱軸的方法?

Input.GetAxis("Horizontal")"Vertical"

LOD和MippingMap?

模型 貼圖 近大遠?。ㄇ逦暮湍:模?/p>

序列化和反序列化?

protobuf? json? xml

隱藏Inspector字段的方法?

HideInInspector

AssetBundle和Resources區別?

Resources的方式需要把所有資源全部打入安裝包

AssetBundle是打成一個資源壓縮包,里面包含了一堆資源,把資源打成幾個小的bundle,用哪個就load哪個,

旋轉使用矩陣,四元數,歐拉角的優缺點?

矩陣 優點是 可以使任意方向 缺點是運算量大,

四元數,優點是可以避免萬向鎖,可以平滑插值旋轉

歐拉角 優點是容易理解,缺點是有萬向鎖

什么會導致unity內存泄漏

網絡5層協議?

應用層 傳輸層 網絡層 數據鏈路層 實體層

狀態機和行為樹的區別?

狀態機(FSM):

數學連通圖

狀態之間需要特定的條件跳轉

節點不容易復用,

狀態節點增加會增加維護成本

同一時刻只有一個節點在執行

行為樹(BT)

樹形結構

高度模塊化行為,行為之間的跳轉由父節點來決定,復用性好

適合做大型的AI

什么是光照貼圖?有什么意義?

烘焙 避免使用實時光

光照探針?什么意義?

補強動態物體的動態的效果

--------------------優化------------------------

優化FPS的方法?

鎖幀 Application.targetFrameRote=30;

unity優化內存?

壓縮自帶類庫,合并材質,合并圖集,使用對象池,

unity中優化CPU?

update中避免使用迭代器,遮擋剔除,視錐體剔除,MipMap,LOD,烘焙光代替實時光,警惕透明物體(透明物體是從后往前渲染的)

unity中優化GPU?動靜態處理

GC的產生原因和避免?

Unity減少GC的方式?

unity中怎么手動GC?

-----------------Network---------------------

網絡數據的序列化方法有哪些?有什么區別?

。proto轉。cs文件,流程?

網絡5層協議?

Http的特點?

TCP和UDP區別?

TCP是面向連接,需要三次握手才能連接成功

UDP不是面向連接,發送完消息就斷了

http,socket,tcp區別?

粘包產生原因,如何解決?

要發送的數據大于TCP發送緩沖區剩余空間大小,將會發生拆包。

待發送數據大于MSS (最大報文長度),TCP在傳輸前將進行拆包。

要發送的數據小于TCP發送緩沖區的大小,TCP將多次寫入緩存區的數據一次發送出去

接收數據端的應用層沒有及時讀取接收緩存區中的數據,將發生粘包

-----------------Lua---------------------

lua基本數據類型有哪些?

lua中什么是元表?

lua中.和:有什么區別?

lua中如何實現面向對象?

pairs和ipairs有什么區別?

dofile和require有什么區別?

ulua熱更新的原理?

熱更新的流程?

cstolua的原理和優點?

pureMVC框架的結構?

pbc的使用流程?

ulua中如何優化?

--------------------shader---------------------

什么是渲染管線?

shader中的數值類型有哪些?

Lambert和BlinnPong的計算公式?

shaderLab的種類?分別什么區別?

頂點函數中常用哪些語義?分別代表什么含義?

AlphaBlend代表什么階段?有哪些常見混合方式?

ShaderForge中Fresnel節點代表什么含義?

RenderType的Opaque和Transparent有什么區別?

RenderQueue中有哪些參數?

shader中Fallback什么意思?

------------------cocos2dx & C++-------------------

NULL和nullptr的區別?

虛繼承的意義?

new,delete,malloc,free的區別?

虛函數和純虛函數有什么區別?

子類析構是需要手動調用父類的析構嗎?

什么是引用?什么是指針?有什么區別?

將引用作為函數返回值的好處?

C++是不是類型安全的

宏定義和const常量有什么區別?

數組和指針的區別?

復雜聲明void*(*(*fp1)(int))[10]代表什么含義?

cocos命令有什么用?請寫出創建工程的命令

cocos2dx中場景圖的結構和遍歷方式

cocos2dx使用圖片和圖集的區別?

cocos2dx中action動作中,to和by的區別?

cocos2dx中獲得鼠標點擊事件的方法?

cocos2dx中開啟update的方法

cocos2dx中如何判斷鼠標點擊了圖片?

-----------------cocoscreator & JS--------------------

js的基本數據類型有哪些?

js的var和let區別?

js的use strict的用法有什么用?

js的變量提升指什么?

js繼承使用哪個關鍵字?

js中require和export的作用?

typeof和instanceof的區別?

cc.Class 聲明有什么作用?

cc中如何聲明數組?

cc中如何獲取自身其他組件?

cc中如何查找自己的孩子?

cc的生命周期有哪些?

cc中如何銷毀節點?

cc中常駐節點有什么用?怎么設置?

cc中如何動態加載資源?

cc中如何發射和監聽事件?

cc中如何判斷兩個精靈發生碰撞?

腳本重構 對腳本的優化

菲涅爾 ViewDic和NormalDic點乘后一減? 跟顏色相乘

將Lua邏輯腳本寫到Lua里面

結構體和類的區別

結構體是值類型 結構體只能聲明成員,不能讓成員初始化

結構體沒有析構函數 聲明構造函數時必須加一個本類的變量作為參數

class是引用類型

--------------打包AB包-------------------------

第一種方式

首先把需要打包的物體設為預設物,把AsststBundle標簽名字改為XX.unitry3d

在編輯器腳本下現找到StreamingAsstesPath路徑,

看是否存在該路徑,如果存在,就把該文件夾Delete掉,在重新創建該SteamingAssets文件夾

使用BuildPipeline.BuildAssetBundles(path,0,BuildTarget.StandaloneWindows64);打包資源

第二種方式

引入Luaframework框架,在Packager中添加打包路徑,然后點擊編輯器腳本生成Wrap文件

--------------什么是粘包--------------------------

只有TCP才有粘包現象

粘包是: TCP發送的時候是以流的形式發送的,所以發送的時候把多個包存儲在一個連續的緩存中,而接收方不知道每個包的接收邊緣,所以估算大小讀取,所以會產生粘包和半包

--------------粘包處理--------------------------

先把收到的數據存儲到內存流里

可以先定義一個int類型的lengthCount=4的值,表示每次讀取數據的長度

在while循環中進行讀取數據,

先把讀取數據的長度放在內存流的開頭,如果數據的長度不足一個int的長度,

就把剩下的字節全部一次讀取,放到內存流的最后

這樣處理就可以通過先讀取最前面的數據長度進行判斷,避免粘包半包的產生

首先聲明MS內存流把收到的信息存到里面

int count=4;

while(MS剩余的字節>count)

{

? 聲明一個ms內存流用于存儲每次從MS中讀取的字節流

? if并把指向當前位置的指針前移相應的字節

? else字符流長度不夠,直接一次全部讀完放到ms的最后,跳出循環,等待下次讀取

}

MS的剩余字節判斷是用MS的字節長度減MS的指針位置得到的

--------------Lua和C#是怎么進行交互的--------------

C#調用Lua是通過LuaInterface進行交互的

Lua調用C#是通過LuaFunction綁定回調

--------------網絡連接--------------------------

一般使用Socket基于TcpClient進行連接,服務器開啟監聽,開啟異步讀取客戶端連接

-----------------------------------------------

四元數、歐拉角、矩陣的區別

四元數就是表示一個3D物體的旋轉,避免萬向鎖 增量旋轉

歐拉角

---------------斷線重連---------------------------心跳包? 輪訊

客戶端每隔一定時間間隔發送一次心跳包,如果客戶端成功發送,但是長時間未接到服務器的

回應,則認為連接已經中斷,如果服務器沒有接收到客戶端的請求,則可以認為客戶端已經離線

如果服務器可以接收到客戶端發來的心跳包,則可以重新連接

有三種方式:

1.靜默重連:就是斷線時用戶不知道,可以應付短暫的網絡中斷

2.顯式重連:在靜默重連一定次數,仍然無法連接成功,此時需要彈出提示框,中斷游戲流程,告知用戶當前網絡環境較差,引導用戶在網絡較好時嘗試連接

3.服務器故障重連.

---------------常用的數據結構----------------

---------------網絡連接底層是怎么實現的

---------------如何加載AB包

---------------什么是外觀模式

---------------MVC

---------------Json和XML的區別

生命周期

Update和FixedUpdate

js,let和var? let是塊級作用域是局部變量聲明,而且無法修改? var定義的變量可以修改

js,數據類型? 值類型String Number Symbol null Undefind? 引用function Object Array

lua數據類型 string local Number boolen function table threed nil

lua和C#交互 Luainterface

C++刪除對象 delete

C++什么是拷貝構造函數 是一種特殊的構造函數,函數名稱必須和類名稱一致,它必須的一個參數是本類型的一? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 個引用變量

unity cpu優化? LOD Mipmap 遮擋剔除 視錐體剔除

SQL刪除語句 Delete form 表名 where username = ""

添加:insert into 表名 values

改update 表名 set id="" where usrename=""

查select * from 表名

NGUI 是插件panel是容器 點擊事件是碰撞檢測 有多個錨點 3DRoot調整3D 渲染層級是Depth 自帶Dotween

狀態模式 數學連通圖 符合人的思維,容易理解 同一時刻只有一個狀態執行 隨著節點的增加增加維護成本

BeahaviaC 選擇 序列

邊緣發光 菲尼爾近似式

張世杰 2019/4/24 17:31:22

狀態機和行為樹 狀態機的標準格式是枚舉Update 增加狀態增加維護成本 數學流通圖 符合人的思維容易理解

? ? ? ? ? ? ? ? ? ? ? ? 行為樹是第三方插件 可視化 樹形結構 高度模塊化 適合做大型AI

優化內存? 壓縮自帶類庫 合并圖集 合并材質 合并紋理 使用對象池機制

熱更新機制 Luaframwork 先生成wrap文件 AB包 檢測md5 如果有文件的md5變化 就把該文件刪掉 重新加載

MySQL、SQLite MySQL是用來做服務器開發的 SQLite用來做客戶端開發的

xml,json,protobuf 序列化后大小比json protobuf小 靈活 proto文件轉cs文件 json是把類序列化成json

shader屬性

設計模式 單例模式 對象池模式 外觀模式 觀察者模式 簡單工廠模式 開發者模式 狀態機模式

NGUI和UGUI NGUI是插件 panel是容器 自帶Dotween 需要碰撞進行射線檢測 渲染層級是Dephe 有多個錨點

? ? ? ? ? ? ? ? ? ? ? UGUI是Unity原生 渲染層級是調層級面板 不需要碰撞盒

內存優化 壓縮自帶類庫 合并圖集 合并材質 合并紋理 使用對象池機制 減少模型的骨骼和面片數量

張世杰 2019/4/24 17:31:34

狀態機和行為樹 狀態機:數學連通圖 符合人的思維容易理解 增加狀態增加維護成本 標配是枚舉和狀態方法

? ? ? ? ? ? ? ? ? ? ? ? 行為樹:高度模塊化 樹形結構 適合做大型AI 可視化

優化內存? 壓縮自帶類庫 合并材質紋理圖集 對象池 減少骨骼和面片

熱更新機制 引入Luaframwork框架 生成wrap文件 打AB包 把StreamingAssets放到網絡文件服務器

? ? ? ? ? ? ? ? 運行的時候檢查每個文件的md5是否和網絡文件服務器一致如果不一致刪除該文件 從網絡

? ? ? ? ? ? ? ? 文件服務器重新加載?

MySQL、SQLite MySQL是服務器開發用的 SQLite是客戶端開發用的

xml,json,protobuf json是把類序列化成json格式的string 可以直接發送 靈活

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? protobuf是第三方插件 用的時候是把類轉成proto類

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xml是把數據轉化成xml格式進行讀取發送

shader屬性

設計模式? 單例模式 對象池模式 觀察者模式 狀態機模式 外觀模式 開發者模式

NGUI和UGUI NGUI是插件 panel是容器 渲染層級是通過Dephe深度 按鈕需要碰撞盒才能檢測點擊事件 自帶DoTween 有多個錨點

內存優化

高復發 多協作

pbc是云峰大神寫的protobuf解析庫? protoc.exe -o 目標文件 源文件

JS是怎么繼承的? estends繼承

. 和 : 的區別? .不是面向對象 調用C#靜態時? :是面向對象引入class 調用C#自身方法

嚴格模式 user strict 指令在JavaScript 不能使用未定義變量 體現代碼的安全性

cc的生命周期 onload OnEnable start update lateUpdate OnDisable OnDestroy

面試題總分類

---------------------------------------

|--繼承,封裝,多態,設計模式理解?---------|

|--網絡層級,tcp,udp,http,socket區別?---|

|--渲染管線,渲染流程,渲染機制------------|

|--優化,cpu,gpu,內存,drawcall,fps?-----|

---------------------------------------|

常見題

---------------------C#----------------------

值類型與引用類型區別?

值類型存儲在內存棧里,存儲速度快,存的是具體數據,內存用完自動釋放,引用類型存儲在內存堆里,存儲速度慢,存的是地址或引用,內存用完由 .Net 的 GC 釋放

簡述對繼承的理解?

多個子類抽象出共有的方法或屬性放入父類,繼承提高了代碼的重用性,增強軟件的可維護性,符合開閉原則

List和ArrayList區別?

arraylist 不帶泛型,數據類型丟失,需要裝箱拆箱, list 帶泛型,數據類型保存,不需要裝箱拆箱

4種訪問修飾符的區別?

private 僅對奔雷公開

public 對任何類公開,沒有訪問限制

protected 對本類和它的子類公開

internal 同一個程序集可以訪問

protected 和 internal 同一個程序集內部以及不同程序集但存在繼承關系的可以引用

面向對象三大特征?

繼承 提高代碼重用性,增強軟件可維護性,符合開閉原則

封裝 將數據和行為相結合,增強代碼安全性

多態 重載和重寫

引用類型的基類?

System.Object

Ref和out區別?

都是通過引用傳遞參數,和 C 中的指針類似,使用 ref 傳遞參數,參數必須初始化,使用 out 必須在方法中對其完成初始化,out適合用在需要 return 多個返回值的地方,ref 用在需要被調用的方法修改調用者的引用的時候

接口和抽象類區別?

接口是對動作的抽象,抽象類是對根源的抽象。

抽象類不能創建實例,只能作為父類被繼承,抽象方法只作聲明,不實現,抽象類有構造函數,可以包含普通成員變量,靜態方法,只能單繼承

接口也不能創建實例,只能包含方法聲明,不能包含常量,字段,構造,析構,靜態成員,可以多繼承

一個類可以實現多個接口,但只能繼承一個抽象類,

相同點:派生類必須實現未實現的方法

String和StringBuilder區別?

string 具有不可變性,每次對 string 對象進行修改其實都是創建另一個 string 類的對象,所以當需要頻繁 的對 string對象 修改時建議使用 stringBuilder,stringbuilder 的原理是先在內存中開辟一定大小的內存空間,如果內存不夠則會對次內存空間進行擴充而不是重新創建一個對象,不會造成過多的內存浪費

string 主要用于公用 API ,通用性好,用途廣泛,讀取性能高,占用內存小,stringbilder 主要用于拼接 string 修改性高,不過現在的編譯器已經把 string 的 + 操作優化成 stringbuilder 了,所以一般用 string 就可以了

string 是不可變的,所以天然線程同步,stringbuilder 可變,非線程同步

簡述常用設計原則?

單一職責:一個對象應該只包含單一的職責,只干一件事,高內聚

里氏代換原則:所有引用基類的地方能透明的使用子類

依賴倒轉原則:抽象不依賴于細節,細節依賴于抽象

接口隔離原則:接口不應該太大或太小

迪米特法則:最少知識原則,低耦合

合成復用原則:優先使用對象組合,而不是繼承來達到復用的目的

開閉原則:對擴展開放,對修改關閉

簡述常用設計模式?

單例模式:全局唯一,靜態不銷毀,可以直接訪問不需要實例化

簡單工廠模式:由一個工廠對象決定創建哪一個對象

觀察者模式:當一個對象發生變化時會自動通知它的依賴對象 實現事件處理系統

狀態模式:類的行為基于狀態改變,需要狀態跳轉(有限狀態機)

外觀模式:隱藏系統的復雜性,并向客戶端提供了一個客戶端可以訪問系統的接口

命令模式:請求以命令的形式包裹在對象中并傳給調用對象

代理模式:一個類代表另一個類的功能,為其他對象提供一種代理以控制對這個對象的訪問

List命名空間?

System.Collections.Generic

二叉樹的前序中序后序

前序遍歷:先訪問根節點,在訪問左節點,在訪問右節點

中序遍歷:先訪問左節點,在訪問根節點,在訪問右節點

后序遍歷:先訪問左節點,在訪問右節點,在訪問根節點

數組和鏈表區別?

鏈表是鏈式的存儲結構,數組是順序的存儲結構

數組必須事先定義固定的長度(元素個數),不能適應數據動態的增減的情況,可以根據下標直接存取,在棧中分配空間,自由度小

鏈表動態的進行存儲分配,可以方便的插入刪除數據項,必須根據 next 指針找到下一個元素,在堆中分配空間,自由度大但是申請管理比較麻煩

如果需要快速訪問數據,很少或不插入刪除元素就應該用數組,如果需要經常插入和刪除元素就需要用鏈表

線程互斥的方法?()

lock 語法糖

Monitor

Mutex

軟件設計四大特性?

可維護性 可復用性 可測試性 安全性

什么是MVC?

模型視圖控制器,用一種業務邏輯、數據、界面顯示分離的方法組織代碼

文件流的3種讀寫方式?

BinaryReader? BinaryWriter

StringReader? StringWriter

StreamReader? StreamWriter

TextReader? ? TextWriter

JIT和AOT?

jit 實時編譯(c# java) 執行慢,安裝快,占空間小

aot 預先編譯(c++ c)? 執行快,安裝慢,占內存外存大

觀察者的設計原則?

依賴倒轉原則(定義對象間的一種一對多的依賴關系)

常用容器類?

Stack 棧,先進后出

Queue 隊列,先進先出

List 列表,訪問快,修改慢

ArrayList 類似于List 使用object 會引起裝箱拆箱,性能不足

Dictionary/HashTable 字典/散列表,查詢效率高,占內存大

數組和list區別?

數組在內存中連續存儲,索引速度非???,賦值和修改元素也很簡單,但是在數組的兩個數據間插入數據很麻煩,而且聲明數組時必須指定數組的長度,過長會造成內存浪費,過短會造成數據溢出

list 在聲明時需要指定集合內數據的對象類型,對象的大小是按照其中存儲的數據來動態擴充與收縮,聲明是不需要指定長度

IO的關鍵字分別有哪些?分別有什么用?

Directory 、 Path 、 File

同步和異步的區別?

同步時單線程,阻塞式

異步時多線程,同時運行多個線程

接口和委托區別?

接口是約束類的應該具備的功能集合,使類從千變萬化的具體邏輯中解脫出來,便于類的管理和擴展,同時又合理解決了類的單繼承問題。

約束方法集合的一個類,可以便捷的使用委托對這個方法集合進行操作。

在以下情況中使用接口:無法使用繼承的場合,完全抽象的場合,多人協作的場合

在以下情況中使用委托:多用于事件處理中

-------------------unity---------------------

Unity生命周期函數有哪些?

Awake->OnEnable->Start->Update->FixedUpdate->LateUpdate->OnGUI->Reset->OnDisable->OnDestroy

Unity光源有幾種?

平行光、聚光燈、點光源、區域光源

Unity動畫有幾種?

關節動畫

單一網格模型動畫

骨骼動畫

矩陣相乘的意義?

用于表示線性變換:旋轉,縮放,投影,平移,仿射

自身坐標系和世界坐標系區別?

localposition 自身坐標系是自身的位置,相對于父級的變換的位置

position 在世界坐標系 transform 的位置

協程和線程區別?

多線程程序同時運行多個線程,除主線程之外的線程無法訪問 Unity3D 的對象,組件,方法

協程,就是當你在 StartCoroutine 的函數體里處理一段代碼時,利用 yield 語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作(迭代器實現的)

異步加載場景的函數?

LoadLevelAsync

unity增加刪除和獲取組件的方法?

AddComponent 、 Destroy 、 GetComponent

UGUI 、GUI 和 NGUI 區別?

UGUI 是原生的,NGUI 是第三方插件

UGUI 渲染層級靠 Hierarchy 位置,NGUI 靠 Depth 修改

UGUI 不需要添加碰撞 NGUI是射線檢測,需要添加碰撞

UGUI 沒有tween NGUI 自帶tween 插件

UGUI 的 Panel 是 Image NGUI 的 Panel 是容器與mask(遮罩)

UGUI 可以用散圖 NGUI 得自己手動打圖集,只能用圖集里的圖片

UGUI 靠 camera 和 world 做3D NGUI 靠 2DRoot 和 3DRoot 做3D

NGUI 錨點可以有多個

GUI 運行時顯示,在unity腳本周期 OnGUI 里調用,UGUI 所見即所得,使用了畫布和事件系統

Unity 重要的文件夾

Edior? ? ? ? ? ? 放編輯器腳本

Resources? ? ? ? 動態加載資源的文件夾

Plugins? ? ? ? ? 放插件相關

StreamingAssets? 資源文件夾,放 AssetsBundle包

unity兩個場景之間互相傳值的方法。

PlayerPrefs 存檔 、 DotDestroyOnLoad 不銷毀

material和SharedMaterial區別?

material 修改渲染器材質,shardmaterial 修改工程中的所有使用這個材質的外觀

碰撞器和觸發器區別?

collider 碰撞器有碰撞效果,可以調用 OnCollisionStay/Enter/Exit函數

trigger? 觸發器沒有碰撞效果,可以調用OnTriggerStay/Enter/Exit函數

什么是DrawCall?

CPU調用圖形編程接口,1個模型帶一個材質單通道shader渲染一次的過程是1個drawcall

.Net和Mono?

.Net是一個語言平臺,Mono為 .Net 提供集成開發環境,集成并實現了 .Net 的編譯器、CLR 和基礎類庫,使得 .Net 既可以運行在 windows 也可以運行于 Linux 、Unix 、 Mac 、 OS 等

點乘和叉乘?

點乘描述了兩個向量的相似程度,結果越大兩個向量越相似,還可以表示投影

叉乘得到的向量垂直于原來的兩個向量

Unity支持的語言?

C# 、 JS 、 Boo

Render,MeshRender和SkinnedMeshRender區別?

Render 是 MeshRender 和 SkinnedMeshRender 的 父類,負責渲染的基類,MehRender 是網格渲染器,SkinnedMeshRender 是蒙皮網格渲染器,用于帶g骨骼動畫的模型身上

Animator的Layer有什么用?

動畫層作為一個具有層級動畫編輯概念的工具, 可以用來制作和處理任何類型的動畫

什么是跨平臺?

在一個平臺上開發的軟件或程序可以在其他平臺上正常運行顯示

Pingpong和Repeat?

Mathf.Pingpong 讓數值 t 在 0 到 length 之間往返 t 值永遠不會大于length的值,也永遠不會小于0。

Mathf.Repeat? 循環數值 t,0到 length之間。t值永遠不會大于length的值也永遠不會小于0。

Lerp,Slerp

Mathf.Lerp? 插值 數值 t 在0 到1之間

Mathf.Slerp? 平滑插值 t 在0 到1之間

動態加載資源的3種方式?

Resources

WWW (AssetBundles)

AssetDatabase.loadasset

矩陣相乘?(必要條件)

第一個矩陣的行數和第二個矩陣的列數必須相同

獲取input,橫縱軸的方法?

Horizontal 、 Vertical

LOD和MippingMap?

Lod: 多層次細節,根據模型所處的環境決定渲染資源分配,提高渲染效率

優點:可以根據距離動態渲染不同細節模型,少渲染定點數和面片數

缺點:需要不同模型,加重美工負擔,加大游戲容量

MippingMap:為了加快渲染速度和減少圖像鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的文件,這樣的貼圖被稱為 Mippingmap(增加33%內存優化GPU)

序列化和反序列化?

序列化是將對象的狀態信息轉換成可以存儲或傳輸的形式的過程

反序列化是將二進制的數據轉化成對象的類或信息

隱藏Inspector字段的方法?

HideInInspector

SerializeField

AssetBundle和Resources區別?

Resources 需要把所有資源全部打入安裝包,對版本升級不利

AssetBundle 把資源打成幾個小包,用哪個就load那個

旋轉使用矩陣,四元數,歐拉角的優缺點

旋轉矩陣:能增量旋轉,不能插值,但比四元數慢,可能發生矩陣蠕變

歐拉角:不能增量旋轉,插值可能遭遇萬向鎖或其他問題,對給定方位的表達方式有無數種

四元數:能夠增量旋轉,能夠平滑插值,對給定方位的表達方式有二種互為正負

什么會導致unity內存泄漏

程序未能釋放已經不用的內存導致內存泄漏

狀態機和行為樹的區別?

狀態機:狀態之間需要特定的條件進行跳轉,狀態節點不需要復用,同一時刻只能有一個狀態在執行,狀態節點的增加會增加維護成本,做復雜的ai不好維護

行為樹:樹形結構,將狀態封裝成高度模塊化的行為,行為之間跳轉由父節點決定,節點復用性增加,適合做大型復雜的ai

什么是光照貼圖?有什么意義?

把一片區域原有光照信息制作成靜態貼圖,減少實時光照,增大內存優化GPU

光照探針?什么意義?

光照貼圖無法對動態物體產生光照效果,增加光照探針使玩家以為實時光照,增加游戲體驗

--------------------優化------------------------

優化FPS的方法?

在Edit/Project Setting/Quality中關閉幀數鎖定

Application.targetFrameRate = TargetFrameRate;? 設置幀率

unity優化內存?

模型頂點優化

UI優化,小圖放大顯示,圖片復用

unity中優化CPU?

視椎體剔除,遮擋剔除(需要烘焙,相機照不到的地方不烘焙)

合理安排圖片和材質,使用 unity 批處理,動態批處理頂點不超過900個

合并模型,文理,打包圖集

腳本重構

unity中優化GPU?

使用光照貼圖,動態光探針,反射探針

Lod、MippingMap(犧牲內存優化GPU)

減少頂點數量,簡化計算復雜度

壓縮圖片,適應顯存帶寬

GC的產生原因和避免?

GC是為了避免內存溢出而產生的垃圾回收機制

避免:盡量少new對象,多使用單例對象池

Unity減少GC的方式?

少用 foreach ,謹慎使用 lambda 表達式

unity中怎么手動GC?

DestroyImmediate

Resources.UnLoadUnusedAssets

System.GC.Collect

-----------------Network---------------------

網絡數據的序列化方法有哪些?有什么區別?

json:輕量級數據交換格式,具有良好的可讀和便于快速編寫的特性,對象表示為鍵值對

protoBuf:google的一種數據交換的格式,獨立于語言,平臺,是一種二進制的格式

XML:擴展標記語言,用來標記數據,定義數據類型,允許用戶對自己的標記語言進行定義的源語言,格式統一,跨平臺和語言

。proto轉。cs文件,流程?

protogen.exe -i: 源文件 -o:輸出文件名? .cs

網絡5層協議?

應用層、傳輸層、網絡層、數據鏈路層、實體層

http,socket,tcp,udp 區別?

TCP 是面向連接的,tcp 的三次握手最低限度上保證了連接的可靠性

UDP 不是面向連接的,消息傳輸不進行收發確認,開銷小傳輸速度快,實時性好

http協議對應于應用層,是建立在TCP協議之上的一種應用。短連接,連接完自動斷開

Socket相當于調用接口(API),用來調取TCP/IP協議。

Socket連接過程分為三個步驟:服務器監聽,客戶端請求,連接確認。

粘包產生原因,如何解決?

發送方發送多個包到接收方后混做一個包

原因:發送方收集多個分組一起發送,接收方 tcp 接受和應用層讀取速度不一致

解決:給沒個包體添加包頭,包頭是包體的長度的字節數組

-----------------Lua---------------------

lua基本數據類型有哪些?

nil 、number 、string 、boolean 、function 、table 、userdata 、thread

lua中什么是元表?

lua 的重載機制,兩個表不能直接進行函數運算,這時候定義其中一個表的元表,在元表里定義一個指定函數就可以了

lua中.和:有什么區別?

lua 中對于非面向對象的類,一般用 .? 對于面向對象的類用 :

lua 調用 c# 類調用靜態函數或字段時用 .? 調用成員函數 :

lua中如何實現面向對象?

利用元表機制? __index? __newindex?

pairs和ipairs有什么區別?

pairs 遍歷表中的所有鍵值對,可以遍歷所有元素

ipairs 只會遍歷數組,不能返回 nil 否則會跳出遍歷

dofile和require有什么區別?

dofile 引入模塊后,再引入一次會刷新,相當于重新引入

require 引入模塊后,再引入一次也不會有任何意義

ulua熱更新的原理?

把控制游戲邏輯的代碼寫成 lua 腳本,在移動端編寫 lua 的解析器,通過解析器運行最新 lua 腳本

熱更新的流程?

修改 AppConst 的調試模式和更新模式

生成 wrap 文件

打資源包 Buil Bundle

將 StreamAssets 上傳資源服務器

打包時修改 游戲名,公司名,修改屏幕分辨率,橫豎屏

cstolua的原理和優點?

減少了跨語言調用,代碼都用lua寫

優點:更好的控制 c# 函數可見性

更快的回收內存

可以支持數組參數

處理二義性

支持重載函數

u3d類型位null檢測,對于已經為空的 unity object 進行提示

嚴格區分枚舉類型和 int 值

支持導出模板類

pureMVC框架的結構?

MVC(模型、視圖、控制器)

pbc的使用流程?

protoc.exe -o 目標文件 源文件

ulua中如何優化?

盡量減少 c# 調用 lua 的次數

--------------------shader---------------------

什么是渲染管線?

也叫渲染流水線,是顯示芯片內部處理圖形信號相互獨立的并行處理單元。

應用階段: cpu收集場景信息,將計算好的數據(頂點坐標,法向量,紋理坐標,紋理)發給gpu

幾何階段:頂點坐標變換,光照,裁剪,投影以及屏幕映射 "變換三維頂點坐標和光照計算"

光柵化階段:將連續的數據轉化成離散的數據,這里光柵階段是指矢量圖形轉化成像素點的過程

將數據3D場景轉換成2D圖像,并在屏幕上顯示出來的總過程

shader中的數值類型有哪些?

float 32位浮點數

half 16位浮點數

int 32位整型數

fixed 11比特 [-2,2]? 精度1/256

bool? 布爾數據

string? 字符串

sampler? 紋理對象的句柄?

Lambert和BlinnPong的計算公式?

漫反射 Lambert :fixed diffuse = max(0 ,dot(normal,lightDir))

漫反射遮蔽(半Lambert):fixed diffuse = max(0 ,dot(normal,lightDir))*0.5+0.5

高光 phong :? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Half3 reflectDir = normalize(reflect(-lightDir,normal));? ? ? ? ? ? ? ? ? ? Float spec = max(0,dot(reflectDir,viewDir));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Float specValue = pow(spec,_Power);

BlinnPhong 高光:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Half3 halfDir = normalize(lightDir + viewDir));? ? ? ? ? ? ? ? ? ? ? ? ? ? Float spec = max(0,dot(normal,halfDir));? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Float? specValue = pow(spec,_Power);

shaderLab的種類?分別什么區別?

固定管線(已棄用):

為了兼容老式顯卡,都是頂點光照,特征是里面出現了形如下面Material塊、沒有CGPROGRAM和ENDCG塊。

頂點和片元著色器 Vertex & Fragment Shader

:功能最強大,最自由的形態,特征是在Pass里出現CGPROGRAM和ENDCG塊,編譯指令#pragma

最主要的包括:#pragma vertex name?

#pragma fragment name

#pragma target name

#pragma only_renderers name name ...?

#pragma exclude_renderers name name...

表皮著色器(SurfaceShader):可以認為是一個光照shader的語法糖,手游不建議使用

特征是在SubShader里出現CGPROGRAM和ENDCG塊。(而不是出現在Pass里。因為SurfaceShader自己會編譯成多個Pass。)

頂點函數中常用哪些語義?分別代表什么含義?

POSITION? ? ? ? 頂點坐標

TANGENT? ? ? ? 切線

Normal? ? ? ? ? 法線

TEXCOORD0 ~ n? 紋理坐標

COLOR? ? ? ? ? 頂點顏色

AlphaBlend代表什么階段?有哪些常見混合方式?

用于兩個透明物體的疊加顯示效果,Blending 就是處理透明度的,處理光柵化的最后階段顯示在屏幕上的顏色

常見混合方式:

Blend zero one :僅顯示目標的RGB 無透明通道處理(alpha為1)

Blend one zero :僅顯示源的RGB 無透明通道處理(alpha為1)

Blend one one :目標和源的RGB值相加,無透明通道處理(alpha為1)

Blend ScrAlpha zero :僅顯示源的顏色(處理透明通道)

Blend ScrAlpha OneMinusDstAlpha :源RGB * alpha + 目標RGB * (1 - alpha)

ShaderForge中Fresnel節點代表什么含義?

邊緣亮顯的效果

RenderType的Opaque和Transparent有什么區別?

渲染標簽類型 Opaque 是不透明的 , Transparent 是透明的

RenderQueue中有哪些參數?

Background?,Geometry,AlphaTest?,Transparent,Overlay???

shader中Fallback什么意思?

在運行平臺硬件不支持該shader的情況下,選擇替代shader。

------------------cocos2dx & C++-------------------

NULL和nullptr的區別?

NULL在c++中是一個宏,是一個空指針常量,如果將NULL擴展為常數,那么這個數是0,類型為int。所以,常數0既是整型常量,也是空指針常量,這就有可能導致二義性問題。因此,c++11新標準引入了nullptr,將其作為空指針常量。

虛繼承的意義?

虛繼承不管父類派生出多少個子類在內存中總存在一套數據,解決了多父類重復成員只保留一份的問題,普通繼承一般會存在于派生類個數對應的N個數據

new,delete,malloc,free的區別?

new、delete是C++中關鍵字,需要編譯器支持,而malloc和free是標準庫函數。需要頭文件支持,它們都可用于申請動態內存和釋放內存。

new操作符申請內存分配時無須指定內存塊的大小,編譯器會根據類型信息自行計算。而malloc則需要顯式地指出所需內存的尺寸。

new是強制類型的,malloc不是,需要類型轉換

new 可以調用構造函數在聲明的時候初始化

malloc只是分配空間,需要在其他地方初始化

而delete不僅會釋放空間,在釋放前會調用析構函數

虛函數和純虛函數有什么區別?

虛函數和純虛函數可以定義在同一個類(class)中,含有純虛函數的類被稱為抽象類(abstract class),而只含有虛函數的類(class)不能被稱為抽象類(abstract class)。

虛函數可以被直接使用,也可以被子類(sub class)重載以后以多態的形式調用,而純虛函數必須在子類(sub class)中實現該函數才可以使用,因為純虛函數在基類(base class)只有聲明而沒有定義。

虛函數和純虛函數都可以在子類(sub class)中被重載,以多態的形式被調用。

虛函數和純虛函數通常存在于抽象基類(abstract base class -ABC)之中,被繼承的子類重載,目的是提供一個統一的接口。

子類析構是需要手動調用父類的析構嗎?

不需要。析構時,先析構派生類,再析造基類。

什么是引用?什么是指針?有什么區別?

指針的本意是可以指向一塊地址空間,這就意味著指針可以指向未初始化的內存空間。

引用的意思更像是一個對象的別名,是指代這個對象的一個名字。

引用類似于一個常量指針,當指定了一個對象的引用,就不能把這個引用改變成其他對象的引用了。

將引用作為函數返回值的好處?

好處:在內存中不產生被返回值的副本

注意事項:不能返回局部變量的引用

不能返回函數局部new分配的內存的引用

可以返回類成員的引用

流操作符重載返回值申明為引用的引用

在另一些操作符中,不能返回引用:+-*/ 四則運算符

C++是不是類型安全的

類型不安全

宏定義和const常量有什么區別?

define是宏定義,程序在預處理階段將用define定義的內容進行了替換。因此程序運行時,常量表中并沒有用define定義的常量,系統不為它分配內存。

const定義的常量,在程序運行時在常量表中,系統為它分配內存。

define定義的常量,預處理時只是直接進行了替換。所以編譯時不能進行數據類型檢驗。

  const定義的常量,在編譯時進行嚴格的類型檢驗,可以避免出錯。

數組和指針的區別?

數組要么在靜態存儲區被創建(如全局數組),要么在棧上被創建。數組名對應著(而不是指向)一塊內存,其地址與容量在生命期內保持不變,只有數組的內容可以改變。

指針可以隨時指向任意類型的內存塊,它的特征是“可變”,所以我們常用指針來操作動態內存。指針遠比數組靈活,但也更危險。

當數組作為函數的參數進行傳遞時,該數組自動退化為同類型的指針。

復雜聲明void*(*(*fp1)(int))[10]代表什么含義?

fp1被聲明成為一個函數的指針,該函數返回指向指針數組的指針.

cocos命令有什么用?請寫出創建工程的命令

cocos new 項目名 -p com.xx.xx -l 項目語言(cpp) -d 創建位置

cocos2dx中場景圖的結構和遍歷方式

cocos2dx使用圖片和圖集的區別?

cocos2dx中action動作中,to和by的區別?

By相對節點對象的當前位置? To 絕對位置

cocos2dx中獲得鼠標點擊事件的方法?

//創建監聽

_mouseListener = EventListenerMouse::create();

_mouseListener->onMouseMove = CC_CALLBACK_1(MouseTest::onMouseMove,this);

_mouseListener->onMouseUp = CC_CALLBACK_1(MouseTest::onMouseUp, this);

_mouseListener->onMouseDown = CC_CALLBACK_1(MouseTest::onMouseDown,this);

_mouseListener->onMouseScroll = CC_CALLBACK_1(MouseTest::onMouseScroll, this);

//綁定監聽

_eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this);

cocos2dx中開啟update的方法

this->scheduleUpdate();

cocos2dx中如何判斷鼠標點擊了圖片?

判斷點擊的圖片 tag

判斷鼠標點擊的像素點是否在圖片中

-----------------cocoscreator & JS--------------------

js的基本數據類型有哪些?

String 、Number 、Boolean 、Null 、Undefined 、Symbol

js的var和let區別?

var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯。

let是塊級作用域,函數內部使用let定義后,對函數外部無影響。

js的use strict的用法有什么用?

嚴格模式下你不能使用未聲明的變量。

消除代碼運行的一些不安全之處,保證代碼運行的安全;

提高編譯器效率,增加運行速度;

為未來新版本的Javascript做好鋪墊。

js的變量提升指什么?

函數及變量的聲明都將被提升到函數的最頂部。 變量可以在使用后聲明,也就是變量可以先使用再聲明。

只有聲明的變量會提升,初始化的不會。

js繼承使用哪個關鍵字?

extends

js中require和export的作用?

遵循 CommonJS/AMD,只能在運行時確定模塊的依賴關系及輸入/輸出的變量,無法進行靜態優化。

typeof和instanceof的區別?

經常用到來判斷一個變量的類型,以及是否為空

typeof的返回值是個字符串,返回的字符串表達了程序員想要輸出的變量類型

instanceof 運算符用來檢測 constructor.prototype 是否存在于參數 object 的原型鏈上。instanceof 可以在繼承關系中用來判斷一個實例是否屬于它的父類型。

cc.Class 聲明有什么作用?

聲明一個類

cc中如何聲明數組?

default:[]

cc中如何獲取自身其他組件?

this.node.getComponent()

cc中如何查找自己的孩子?

this.node.getChildByName("xxx");

cc.find("xxx", this.node);

cc的生命周期有哪些?

onLoad 、start 、update 、lateUpdate 、onDestroy 、onEnable 、onDisable

cc中如何銷毀節點?

node.destroy()

cc中常駐節點有什么用?怎么設置?

通過常駐節點進行場景資源管理和參數傳遞

使用 cc.game.addPersistRootNode(this.node)添加為常駐節點

在creator的引擎里面只有根節點才能夠被成功的設置為常駐節點

cc中如何動態加載資源?

所有需要通過腳本動態加載的資源,都必須放置在 resources 文件夾或它的子文件夾下

resources 需要在 assets 文件夾中手工創建,并且必須位于 assets 的根目錄

cc.loader.loadRes

cc中如何發射和監聽事件?

? ? cc.SystemEvent.EventType.KEY_DOWN (鍵盤按下)

? ? cc.SystemEvent.EventType.KEY_UP (鍵盤釋放)

? ? cc.SystemEvent.EventType.DEVICEMOTION (設備重力傳感)

? ? 自定義回調函數:callback(event);

cc中如何判斷兩個精靈發生碰撞?

在 rigidbody 中 開啟碰撞監聽

開啟碰撞監聽,定義回調函數

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容