原创 設計模式的六大原則之六(開放封閉原則)

原則6:開放封閉原則 核心思想:軟件實體應該是可以擴展的;也就是,對擴展開放,對修改封閉; 定義 一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉 在軟件的生命週期內,因爲變化、升級和維護等原因需要對軟件原有代碼進行修改時,  可能

原创 XLua運行時熱更新原理與實現

前言 感謝提供思路兩個博客主以下是博客地址:https://gameinstitute.qq.com/community/detail/120538 https://www.jianshu.com/p/7b8ae23ecd81 基本知識(

原创 Unity3d DOTween 插件 詳細使用方法

Tween的移動類型有很多種,比如勻速運動、加速運動、減速運動,等等。如果你拿捏不準你需要用什麼移動類形式。 http://www.robertpenner.com/easing/easing_demo.html 你可以在這裏預覽一下那種

原创 設計模式的六大原則之二(里氏替換原則)

原則2:里氏替換原則 核心思想:子類必須能夠替換其基類; 名字的由來 肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。  其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裏的女士(Barbara Lisk

原创 設計模式之外觀(Facade)模式

外觀模式 外觀模式(Facade Pattern)隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的接口。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個接口,來隱藏系統的複雜性。 這種模式涉及到一個單一的類,該類提供了客

原创 Lua協程、GC垃圾回收機制以及如何調用C/C++函數

Lua 協程(coroutine) 線程和協同程序區別與聯繫 相同之處:Lua 協同程序(coroutine)與線程比較類似:擁有獨立的堆棧,獨立的局部變量,獨立的指令指針,同時又與其它協同程序共享全局變量和其它大部分東西。 不同之處:一

原创 Unity幀同步遊戲極簡框架及實例(附客戶端服務器源碼)

閱前提示: 此框架爲有幀同步需求的遊戲做一個簡單的示例,實現了一個精簡的框架,本文着重講解幀同步遊戲開發過程中需要注意的各種要點,伴隨框架自帶了一個小的塔防sample作爲演示. 哪些遊戲需要使用幀同步 如果遊戲中有如下需求,那這個遊戲的

原创 Unity 動畫壓縮及其優化

一:爲什麼要做動畫優化     動畫文件在遊戲包體和內存中佔的比例僅次於貼圖,優化好動畫文件,就優化了一小半遊戲內存。拿我們正在開發的遊戲舉例,優化後的包體和內存比優化前減少了一百多兆,大概優化掉了五分之一的內存。 二:優化思路    2

原创 Unity骨骼動畫優化

一:骨骼動畫的原理 用Unity做遊戲經常會用到3D角色,也就會用到骨骼動畫。骨骼動畫對性能的影響其實非常大的,在說這個問題之前,先來說說骨骼動畫的原理。 我之前做過多種骨骼動畫,包括寫過2D的骨骼動畫系統(類似於現在比較流行的龍骨系統)

原创 C#中的強引用和弱引用

我們平常用的都是對象的強引用,如果有強引用存在,GC是不會回收對象的。我們能不能同時保持對對象的引用,而又可以讓GC需要的時候回收這個對象呢?.NET中提供了WeakReference來實現。弱引用可以讓您保持對對象的引用,同時允許GC在

原创 Unity中事件函數的執行順序【超詳細,圖+文】

在Unity腳本中,有一些事件函數會在腳本執行時按預定順序執行。 該執行順序如下所述: 編輯 Reset:Reset是用來初始化腳本屬性的,在第一次腳本附在對象上的時候和按下Reset按鈕的時候會被執行。 第一次場景加載 Awake:Aw

原创 C++對象模型

何爲C++對象模型? C++對象模型可以概括爲以下2部分: 1、語言中直接支持面向對象程序設計的部分; 2、對於各種支持的底層實現機制。 語言中直接支持面向對象程序設計的部分,如構造函數、析構函數、虛函數、繼承(單繼承、多繼承、虛繼承)、

原创 設計模式之代理模式(Proxy mode)

代理模式(Proxy):爲其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 組成: 抽象角色:通過接口或抽象類聲明真實角色實現的業務方

原创 Unity 網絡遊戲同步方式

對於聯網遊戲來講,同步的方式主要分爲兩種,狀態同步、幀同步。 1、狀態同步:顧名思義,是指的將其他玩家的狀態行爲同步的方式,一般情況下AI邏輯,技能邏輯,戰鬥計算都由服務器運算,只是將運算的結果同步給客戶端,客戶端只需要接受服務器傳過來的

原创 windows環境下lib和dll的區別和聯繫詳細

c++中共有兩種庫: 1、LIB包含了函數所在的DLL文件和文件中函數位置的信息(入口),代碼由運行時加載在進程空間中的DLL提供,稱爲動態鏈接庫dynamic link library。(這種方式更靈活,寫的程序體積小,但是需要.exe