原创 【深入瞭解cocos2d-x 3.x】一步一步通過ClippingNode實現一個功能完善的跑馬燈公告(1)

這篇文章主要是通過一步一步實現一個功能完善的跑馬燈公告來展示ClippingNode的用法並且最終深入ClippingNode的源碼,瞭解其實現原理。 首先,先介紹一下ClippingNode,ClippingNode也叫裁剪節點,能將一

原创 【算法】戀愛中的博弈論(stable matching)(附帶源碼)

思路源自知乎:戀愛中有那些博弈?,主要是@尼克餘 的回答。感謝他。然後原文有些描述不清楚的,我直接就按照我的理解補充上去了。 注:本文采用C#實現 首先假設一個虛擬世界,這個世界中分別有N個男生,N個女生,男生與女生數量完全一樣,男生

原创 【算法】用lua解決快速排序問題

如下 local list = { 3,1,5,18,34,32,0, } function printList() local str = "

原创 【算法】用Lua解決八皇后的問題

最近在學習Lua腳本,經過了不到十天的學習,也算是對語法有所瞭解吧,另外正好也看到了八皇后問題,感覺挺有意思的 就試了試用算法解出來。 八皇后問題的原題是:八皇后問題是一個以國際象棋爲背景的問題:如何能夠在 8×8 的國際象棋棋盤上放置

原创 【深入瞭解cocos2d-x 3.x】UI樹(3)——UI樹的渲染機制

渲染系統是遊戲引擎裏面最重要的一個模塊之一了,如何遍歷UI樹,如何將UI合理的渲染在屏幕上,如何選擇渲染的順序,這是渲染系統最需要考慮的。其實遍歷的順序就決定了渲染的順序。 cocos2d-x的渲染函數是通過Node::visit來進行的

原创 【深入瞭解cocos2d-x 3.x】內置數據結構(1)——智能指針

智能指針在C++11的標準中已經存在了,分別是unique_ptr,shared_ptr,weak_ptr,其中最常用的應該是share_ptr,它採用引用計數的方式管理內存,當引用計數爲0的時候,自動釋放內存,但是由於shared_pt

原创 【Unity&C#】運行在主線程的Socket

通常的Socket都是通過多線程的方式來實現的,多線程需要確保線程安全,而且代碼量也會相對多一些,由於之前已經實現了Unity的協程功能,現在就可以通過協程來實現單線程的Socket了。 首先,封裝一下C#的Socket。 us

原创 【面經】騰訊U3d面試面經 幀同步方向(總)

近期拿到了一個騰訊的offer,記錄一下面試過程。 我找的內推,面試的流程如下: 上傳內推簡歷,接着馬上被HR轉到項目組裏面,一個小時左右面試官電話過來約面,接着電話面,然後去科興面,最後HR面,OFFER到手。 總的來說騰訊的面試流程還

原创 【UGUI】基於Mesh的單一圖片裁剪

參考了這篇文章:https://www.cnblogs.com/leoin2012/p/6425089.html 這篇文章的源碼在這裏:https://github.com/HanxianshengGame/UGUI_CircleImag

原创 【深入瞭解cocos2d-x 3.x】UI樹(2)——UI樹的內存管理機制

上篇文章分析了什麼是UI樹,以及UI樹的使用方法,這節會重點分析UI樹的內存管理機制以及如何利用UI樹對遊戲中的UI內存進行合理的管理。 說到UI樹的內存管理機制,就不得不提cocos2d-x的內存管理機制——引用計數了,相信只要不是初

原创 【算法】用Lua解決冒泡排序

腳本語言太好用了!忍不住又寫了個冒泡 代碼如下: local list = { 3,1,5,18,34,32,0, } function printList() local str = "" for i = 1,#list do

原创 【深入瞭解cocos2d-x 3.x】如何進行合理的內存分配

設想如下場景,這是一個典型的內存合理分配的場景:在一幀內,有若干個函數,每個函數都會創建一系列的精靈,每個精靈都不同,都會佔用一定的內存,精靈的總數可能會有1000個,而一個函數只會創建10個精靈這樣,創建的精靈只會在這個函數中使用,大致

原创 【深入瞭解cocos2d-x 3.x】定時器(scheduler)的使用和原理探究(1)

注:本文開始,引擎升級到cocos2dx 3.6 在遊戲開發過程中,經常會遇到使用計時器的情況,例如:倒計時,定時炸彈等。scheduler是cocos2dx 2.x時代就已經存在的產物,主要用於各種延時函數以及各種每幀運行的函數。本文

原创 【Unity】理解協程的原理1——實現一個自己的WaitForSeconds

協程的所能達到的效果就是在指定的時間點上執行需要執行的代碼,Unity中開始一個協程的函數是StartCoroutine,而提供的延遲的類有以下幾種分別是 new WaitForEndOfFrame; /

原创 【深入瞭解cocos2d-x 3.x】一步一步通過ClippingNode實現一個功能完善的跑馬燈公告(2)

本文的主要內容是根據跑馬燈解析ClippingNode實現原理。本文涉及到cocos2dx 3.x的渲染機制以及部分opengl的知識。 首先看看上一篇文章中說到的跑馬燈的簡單實現: //設置模板 auto stencil = Sp