精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Cocos 插件教程:編寫帶擴展屬性插件的經驗分享

移動開發 游戲開發
這兩天用cocos插件編寫了一個2d粒子控件。很明顯的感受是官方文檔不是很完善,那篇超級長的說明脈絡也不是很清晰,以至于我在此期間掉了不少坑走了不少彎路,不過這次cocos放出來的插件系統還是很靈活很強大的,從編輯到最終輸出都可以由我們自定義實現。這篇教程就來分享下我這兩天做擴展屬性過程中總結的經驗,探討在插件的編寫過程中的一些技巧,幫助下后來者。

這兩天用cocos插件編寫了一個2d粒子控件。很明顯的感受是官方文檔不是很完善,那篇超級長的說明脈絡也不是很清晰,以至于我在此期間掉了不少坑走了不少彎路,不過這次cocos放出來的插件系統還是很靈活很強大的,從編輯到最終輸出都可以由我們自定義實現。這篇教程就來分享下我這兩天做擴展屬性過程中總結的經驗,探討在插件的編寫過程中的一些技巧,幫助下后來者。

一、如何開始?

可能大家之前看過這篇《Cocos Studio 擴展說明》(下稱《說明》):

http://cn.cocos2d-x.org/tutorial/show?id=2650

這說明篇幅之大之長,估計嚇退了不少小伙伴。鼓起勇氣讀下去的估計半路上也睡倒了一片。(我就看到睡著了幾次,信息量實在太大了,催眠神器啊有木有。。。)

實際插件的編寫并沒那么復雜,直接修改官方提供的sample工程即可。

打開sample工程。(sample工程的路徑請看《說明》第3點“示例工程位置”)

可以看到里邊有這么多文件:

說明:

ü 其中DataModel、Templates和ViewModel是官方的一個Custom控件的示例,Lua文件夾下也有類似的三個文件夾,這個是帶文本sprite插件的源碼。

ü Editor是屬性區自定義控件的例子。

ü PublishExtend是自定義導出數據格式的例子。

ü AddinConfig是插件的配置文件,配置當前插件所依賴的模塊,目前我們不需要改動。

復制一份插件工程,保留我們希望使用的例子來作為模版,其他文件刪除。

我期望寫個粒子插件,不需要自定義Editor和導出數據格式,因而我只保留ExtensionModel和Lua兩個文件夾,并將“Lua”重命名為“Particle”,如下所示:

然后根據我們的需要對剩下的文件做一些修改:

1. LuaObject.addin.xml文件

修改為T4模版生成的類。

2. ViewModel下的CustomParticleObject.cs文件

這個文件需要改三處

a.這四個屬性主要用于編輯器顯示控件的一些信息。還有CustomParticleObject繼承的類型也需要根據自己的需要修改。(具體看《說明》中的“視圖模型”部分)

b.創建插件時的默認名稱。

c.依賴的lua文件。即LuaScript文件夾下對應本插件的Lua文件。

3.DataModel的CustomParticleObjectData.cs修改如下兩處:

4. Lua文件夾下的CustomParticleObject.tt模板文件,修改繼承的對象類型和ViewModel類的類名。(具體看《說明》“Lua 代碼生成模板”部分)

OK,改完這些,我們就配置完一個插件工程了。接下來我們還需要在lua中完成對引擎的擴展,然后在編輯器中調用lua的接口。

PS:2.2.1升級至2.2.5之后,需要相應地升級插件工程,具體可看新版本示例工程中Addins/Addins.Sample/Lua/修改記錄.txt

二、 編寫對應的Lua文件

這一步主要是將我們的接口準備好,給上邊配置的C#工程調用。

首先是必須做的四件事:

1.在文件的***返回一個table給插件工程,此后插件工程會在這個table上找需要的接口。這里我們稱這個table為“container”

2.為“container”添加CreateCustomNode的工廠函數,創建一個我們擴展的Cocos2d-x對象并返回。

3.為“container”添加一個GetBaseType函數,返回我們插件的基礎類型。(之后我們的插件也會有這個基礎類型的編輯接口。)

4.把編寫出來的文件放到cocos文檔路徑的Addins/LuaScript下

然后在1所述的table上添加一些屬性接口來跟插件工程進行數據交換,可交換的數據只能是如下這些數據類型,且一次只能交換一個數據:

Bool

Int

String

Double

Float

Color

ResourceData

PS:lua下沒有區分Float、Double和Int,這些都用double來承載。

技巧:

1.插件工程在table上查找字段的方式不是用rawget方式,因此元表還是可用的,我們可以給table設置__index元表,重定向到我們的所擴展的2d-x對象,某些我們所擴展的對象已經有的簡單接口用元表定位即可,不需要在table中再寫一次,減少一點工作量。

2.如果這個lua文件出錯了,cocos不會給什么有用的調試信息。我們先在一個2d-lua工程里邊調試,直到所有接口都正常工作后再放到cocos中,這樣能節約不少時間。

3.這個文件跟最終導出的數據不一定有關聯。

三、 在插件工程中添加與lua層交換數據的接口

主要是給視圖模型(ViewModel文件夾下那個對象)編寫一些property,每編寫一個property編輯器就會在屬性區生成一個屬性控件。然后就可以用這些屬性控件來進行可視化編輯。

與lua的通訊需要通過LuaValueConverter來調用Lua層的接口,進行數據交換。

一個基本的property大概是這樣的:

[UndoPropertyAttribute]

[DisplayName("TangentialAccel")]

[Category("Group_Feature")]

[PropertyOrder(-99)]

[Browsable(true)]

public float TangentialAccel

{

get

{

return luaValueConverter.GetFloatValue("getTangentialAccel");

}

set

{

luaValueConverter.SetFloatValue("setTangentialAccel",value);

this.RaisePropertyChanged(() => this.TangentialAccel);

}

}

首先是幾個用中括號包著的attribute、當前property的聲明然后是getter、setter定義。Attribute值的作用可以看看《說明》的“屬性區擴展”一節。

其次還有setValue函數。這個函數在進行克隆操作時發揮作用。將上述寫的property賦值給傳進來的cObject對象相對應的property即可。

技巧:

1.如果有比較多的屬性的話,可以先寫同一類型的擴展屬性,調試到可用后復制黏貼,修改名字。

2.可以用Cocos Studio.Basic.LogConfig.Output.Info(String )在C#插件工程中輸出錯誤信息。

3.調試時使用VS的“調試”-“附加到進程”,附加到Cocos Studio主進程進行調試,C#代碼出錯時,VS會幫你指出出錯的位置并且有詳細的調試信息。所有導致崩潰的錯誤一般都能夠定位到。

4.目前lua下沒有輸出錯誤信息的接口,少量的調試信息可以用一個text控件放在創建的節點上做輸出。Lua下socket和io模塊還能夠使用,我們可以利用這兩個模塊來輸出調試信息,我使用的是socket,大家可以參考下我的源碼。cocos的研發同學表示會盡快提供log接口,到時就沒那么麻煩了。

四、 編輯DataModel

即CustomParticleObjectData.cs文件,以property的方式聲明下各個需要被保存到csd文件的性質,前面寫上[ItemProperty] [JsonProperty]。這樣這些數據就會被保存到csd文件當中了,我們關掉編輯器再次打開,編輯過的數據就不會丟失了。生成T4模板的時候,模板里邊引用的值也是從這里來的。

注意顏色類型的性質要用ColorData聲明(是的我被坑過)。這里可能出錯的點是數據類型寫錯,現象是不能保存也不能導出。

五、 代碼生成模板

即Lua文件夾下的CustomParticleObject.tt模板文件。功能是將編輯器編輯出來的值按特定模板輸出出來。

技巧:

如果你看過我的lua文件和T4模板的話,你會發現二者之間毫無關聯。我的lua文件中的CreateCustomNode是創建了一個node對象然后再建一個particle對象做為node的子對象。這樣做的目的是為了能夠實現更換粒子模板的效果(更換粒子模板需要重新生成粒子對象)。

其實T4就是根據模板將值填寫到字符串中,最終保存到文件里,愿意的話,生成C++代碼都沒問題。

責任編輯:老門
相關推薦

2009-08-07 10:00:00

在Eclipse中安裝

2022-05-30 07:58:52

瀏覽器插件

2011-06-27 17:24:37

Qt 插件

2011-03-28 11:20:11

Nagios 插件

2011-04-06 16:02:26

Nagios插件

2021-07-28 06:51:09

linux

2011-07-27 13:04:39

jQuery

2009-09-15 09:29:29

Google Chro擴展插件谷歌

2013-08-01 15:12:43

2016-09-21 12:34:10

Chrome瀏覽器插件

2009-06-24 10:58:21

jQuery插件教程

2011-06-27 16:59:19

Qt 動態 插件

2011-08-23 18:04:40

LuaWiresharkDissector

2009-01-03 15:05:31

ibmdwEclipseSymphony

2009-12-04 10:19:04

2019-04-23 12:10:00

前端開發編程

2011-03-31 14:06:01

Cactisetup

2015-05-15 10:52:23

jQuery社交網絡分享插件

2011-06-03 10:15:13

2011-03-31 10:45:18

JavaScript
點贊
收藏

51CTO技術棧公眾號

国产精品一区=区| 国产手机视频精品| 国风产精品一区二区| 亚洲国产成人在线观看| 久久亚洲色图| 欧美人成在线视频| 美女100%无挡| 天堂av一区| 色视频成人在线观看免| 手机看片日韩国产| 欧美成人综合在线| 国产剧情一区二区| 国产成人精彩在线视频九色| 日韩va亚洲va欧美va清高| 青青草原在线亚洲| 91精品国产麻豆国产自产在线| 欧日韩免费视频| 一本一道波多野毛片中文在线| 国产精品一区一区| 国产精品99久久久久久久久久久久| 777777国产7777777| 色棕色天天综合网| 亚洲黄色片网站| 日韩av自拍偷拍| 亚洲成人短视频| 婷婷亚洲久悠悠色悠在线播放| 一区二区视频在线观看| 日本天堂在线| av不卡在线观看| 亚洲一区二区日本| 中文字幕人妻一区二区在线视频 | 日本一级淫片免费放| 日韩精品一卡| 伊人伊人伊人久久| 一区二区三区免费在线观看视频| 日韩精品中文字幕一区二区| 欧美日韩高清一区二区三区| 免费在线观看的毛片| 色黄视频在线观看| 亚洲狠狠爱一区二区三区| 最近免费观看高清韩国日本大全| 在线看免费av| 国产日韩精品一区二区三区| 欧美激情导航| 欧美日韩在线中文字幕| 99久久精品国产导航| 动漫一区二区在线| 日本xxxxwww| 波多野结衣在线一区| 国产精品区一区二区三含羞草| 国产三级漂亮女教师| 精品在线免费观看| 成人网欧美在线视频| 国产精品国产三级国产普通话对白 | 日韩综合中文字幕| 中文字幕91视频| 99久久精品网| 精品中文字幕视频| 久久久91视频| 亚洲黄页一区| 国产91热爆ts人妖在线| 欧美成人一区二区三区四区| 日本欧美一区二区三区乱码| 国产精品亚洲精品| 99久久婷婷国产一区二区三区| 国产麻豆欧美日韩一区| 国产精品成人观看视频免费| 日本xxxxwww| 久久只精品国产| 五月天色一区| 亚洲制服国产| 精品国产乱码久久久久酒店 | 亚洲白虎美女被爆操| 欧美肉大捧一进一出免费视频| 日韩美女精品| 中文字幕精品www乱入免费视频| 亚洲国产精品一区二区久久hs| 综合色一区二区| 性欧美亚洲xxxx乳在线观看| 日韩 国产 欧美| 国产乱国产乱300精品| 国产伦精品一区二区三区| 激情小视频在线观看| 国产精品情趣视频| 男女激情免费视频| 国产精品迅雷| 日韩一区二区免费高清| 精品无码国产一区二区三区51安| 精品免费视频| 欧美成人午夜剧场免费观看| av大全在线观看| 久久精品国产亚洲高清剧情介绍| 成人一区二区在线| 国产日本在线观看| 一区二区三区精品视频| 国产情侣av自拍| 秋霞午夜一区二区三区视频| 亚洲老头同性xxxxx| 国产日韩精品中文字无码| 在线视频观看日韩| 成人激情视频在线播放| 天天干天天舔天天射| **性色生活片久久毛片| 青青草原成人网| 视频欧美一区| 日韩中文字幕在线免费观看| 日韩精品1区2区| 国产福利91精品一区二区三区| 蜜桃久久精品乱码一区二区| 亚洲色图美国十次| 欧美天堂亚洲电影院在线播放| 日韩黄色一区二区| 91视频久久| 国产不卡av在线免费观看| 亚洲伦理在线观看| 亚洲精品中文在线观看| 婷婷丁香激情网| 日韩影视在线观看| 久久久午夜视频| 国产伦精品一区二区三区四区 | 欧美精品一区二区三区在线看午夜| 亚洲精品白浆| 欧美喷潮久久久xxxxx| 成年人网站免费看| 日韩视频一区| 国产精品推荐精品| av大片在线| 欧美日韩国产高清一区| 调教驯服丰满美艳麻麻在线视频| 亚洲免费影视| 久久99精品久久久久久久青青日本 | 亚洲老妇色熟女老太| 国产精品电影院| 天天操天天摸天天爽| 亚洲综合福利| 69视频在线免费观看| 黄色成人一级片| 一区二区久久久久久| 青青草原播放器| 68国产成人综合久久精品| 国产精品自产拍在线观| av电影在线观看一区二区三区| 色老综合老女人久久久| 瑟瑟视频在线观看| 日韩高清在线不卡| 欧美成人dvd在线视频| 在线看片福利| 亚洲美女精品成人在线视频| 亚洲黄色免费观看| 久久精品视频在线免费观看| 超碰影院在线观看| 欧美偷拍自拍| 国产欧美精品在线播放| 麻豆免费在线观看| 欧美一区二区三区系列电影| 午夜免费激情视频| 成人黄色av网站在线| www.日本少妇| 一区二区三区视频免费观看| 国产精品高清在线| 男女啪啪在线观看| 日韩视频国产视频| 四虎成人精品永久免费av| 91在线国产观看| 男人女人黄一级| 日韩成人精品一区| 国产欧美一区二区三区久久| 97超碰在线公开在线看免费| 精品国产电影一区二区| 久久久久久久极品| 国产精品免费看片| 少妇熟女视频一区二区三区| 久久精品国产清高在天天线| 视频一区三区| 综合欧美亚洲| 欧美专区日韩视频| 欧美18hd| 日韩成人中文字幕| 中文字幕在线观看欧美| 一区二区三区日韩欧美| 国产精品揄拍100视频| 精品亚洲国产成人av制服丝袜| 伊人再见免费在线观看高清版 | 免费欧美网站| 97视频免费观看| 日本激情视频在线观看| 精品国产人成亚洲区| 国产精品久久久久久久久夜色| 亚洲特级片在线| wwwwww日本| 国产成人免费视频网站| 成年人视频在线免费| 欧美日韩四区| 先锋影音日韩| 欧美黄色网视频| 成人免费直播live| 欧美大片免费| 欧美激情久久久久久| 国产精品久久一区二区三区不卡 | 毛片在线播放a| 亚洲精品大尺度| 国产精品一品二区三区的使用体验| 亚洲777理论| 91高清免费看| 国产日韩av一区| 国产精品一区二区人妻喷水| 久久成人羞羞网站| 欧美视频第三页| 亚洲精品乱码| 免费的av在线| 成人午夜av| 免费成人av网站| 国产精品流白浆在线观看| 成人欧美在线观看| 吞精囗交69激情欧美| 久久久久久有精品国产| 成人免费视屏| 色999日韩欧美国产| 日韩精品一二| 亚洲国产精品国自产拍av秋霞| 国产伦精品一区二区三区四区 | 婷婷激情综合| 香蕉久久夜色| 国内精品视频在线观看| 久久av免费一区| 中文一区二区三区四区| 亚洲一区中文字幕| www一区二区三区| 成人激情春色网| 亚洲日本中文| 国产免费久久av| 欧美啪啪网站| 国产日韩精品电影| 久久电影天堂| 国产男女猛烈无遮挡91| julia一区二区三区中文字幕| 国产ts一区二区| 欧美一区久久久| 日本午夜人人精品| 成人性生交大片免费网站| 2019中文字幕免费视频| 国产在线美女| 2019亚洲男人天堂| 特黄毛片在线观看| 日韩av理论片| 精品亚洲美女网站| 国产福利精品av综合导导航| 日韩精品99| 国产精品香蕉国产| 亚洲精品aaa| 亚洲影视九九影院在线观看| 美女国产精品久久久| 99re在线播放| 噜噜噜狠狠夜夜躁精品仙踪林| 国产伦精品一区二区三区照片91| 免费看久久久| 秋霞在线观看一区二区三区| 青草国产精品| 中文字幕av日韩精品| 午夜欧美理论片| 免费成人午夜视频| 日韩成人dvd| 手机版av在线| 国产成人精品免费一区二区| 韩国黄色一级片| 99久久久久久| 少妇一级黄色片| 成人免费一区二区三区视频| 欧美三根一起进三p| 亚洲第一主播视频| 日本一本在线观看| 69p69国产精品| 国内爆初菊对白视频| 亚洲乱码国产乱码精品精| yiren22综合网成人| 久久成人人人人精品欧| 91资源在线观看| 国产精品久久久久久久久久新婚| gogo大尺度成人免费视频| 国产日韩久久| 日产午夜精品一线二线三线| 免费的av在线| 天堂av在线一区| 国产成人精品综合久久久久99 | 麻豆一区二区三区| 国产成人精品一区二区三区在线观看| 91麻豆精品一区二区三区| 999久久久国产| 亚洲午夜免费视频| 无码人妻精品一区二区50| 日韩视频一区二区三区| 欧美日韩影视 | free欧美| 粉嫩av免费一区二区三区| 成人3d动漫在线观看| 天堂8在线天堂资源bt| 日韩激情中文字幕| 激情av中文字幕| 中文字幕亚洲在| 亚洲另类欧美日韩| 日韩欧美在线123| 国产在线观看黄| 久久久久久久久久久人体| 久久精品超碰| 欧美亚洲免费在线| 韩国在线一区| 夜夜夜夜夜夜操| 久久精品一区二区三区四区| 久久久久久久久久久97| 欧美日本一区二区| 青青草超碰在线| 国内精品免费午夜毛片| 精品午夜视频| 亚洲精品视频一二三| 蜜桃久久av| 中文字幕人妻一区二区三区| 亚洲欧洲精品天堂一级| 中文字幕乱伦视频| 亚洲免费一在线| 黄色aa久久| 精品国产乱码久久久久久丨区2区| 国产国产精品| 五月花丁香婷婷| 欧美国产欧美亚州国产日韩mv天天看完整| 日本中文字幕网| 精品处破学生在线二十三| 亚洲丝袜精品| 97伦理在线四区| 欧美久久影院| 波多野结衣三级视频| 一区二区三区在线视频观看| 91亚洲精品国偷拍自产在线观看| 国产一区二区三区直播精品电影| 亚洲精品mv| 蜜桃网站成人| 免费视频一区| 91精品人妻一区二区| 精品美女国产在线| 天天干,天天操,天天射| 97热精品视频官网| 久久中文资源| 草草久久久无码国产专区| 99热这里都是精品| 亚洲第一在线播放| 国产亚洲美女久久| 青娱乐极品盛宴一区二区| 在线视频不卡一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 最新av电影网站| 在线91免费看| 国产蜜臀一区二区打屁股调教| 高清不卡日本v二区在线| 亚洲国产日韩欧美一区二区三区| yy1111111| 色一情一乱一乱一91av| 91网在线播放| 亚洲影院色在线观看免费| 亚洲一级一区| av网站有哪些| 色94色欧美sute亚洲13| √新版天堂资源在线资源| 国产在线精品成人一区二区三区| 亚洲国产精品日韩专区av有中文| 潘金莲一级淫片aaaaa| 亚洲18女电影在线观看| 亚洲人视频在线观看| 国产精品激情av在线播放| 99精品小视频| 91精品又粗又猛又爽| 第一福利永久视频精品| 亚洲成a人v欧美综合天堂麻豆| 91久久在线视频| 亚洲国产精品一区| 69视频在线观看免费| 日韩视频在线你懂得| av人人综合网| 婷婷久久青草热一区二区| 国产黑丝在线一区二区三区| 日韩精品一区二区亚洲av| 日韩在线激情视频| 麻豆一区二区| 日本黄大片一区二区三区| 亚洲中国最大av网站| 青青草在线免费视频| 亚洲影院色无极综合| 久久人人精品| 粉嫩av性色av蜜臀av网站| 亚洲美女性生活视频| 国产精品一区三区在线观看| 欧美牲交a欧美牲交| 亚洲少妇最新在线视频| 青青草免费观看免费视频在线| 成人免费看吃奶视频网站| 国产欧美在线| 999精品在线视频| 精品亚洲aⅴ在线观看| 精品视频在线观看免费观看 | 男同互操gay射视频在线看| 99re这里只有精品首页| 国产免费不卡av|