精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美在线观看一区二区三区| 亚洲精品一二区| 日本a在线天堂| 亚洲av成人精品日韩在线播放| 玖玖在线精品| 久久精品国产亚洲精品2020| 欧美xxxx日本和非洲| 超碰一区二区| 亚洲黄色免费电影| 欧美不卡在线一区二区三区| 97超碰人人草| 99国产成+人+综合+亚洲欧美| 中文字幕欧美日韩精品| 美女扒开腿免费视频| 日韩三区免费| 一区二区三区不卡视频在线观看| 欧美日韩成人一区二区三区| 国产夫妻在线观看| 天堂va蜜桃一区二区三区| 欧美成aaa人片在线观看蜜臀| 先锋资源av在线| 小说区图片区亚洲| 一本色道亚洲精品aⅴ| 国产免费xxx| 国产高清在线| 99久久婷婷国产综合精品电影| 国产精品小说在线| 亚洲 欧美 中文字幕| 激情久久婷婷| 久久深夜福利免费观看| 欧美多人猛交狂配| 国产成人精品亚洲线观看| 色婷婷综合激情| 日韩网站在线免费观看| 国产剧情在线| 国产精品短视频| 欧美在线播放一区| 三区在线观看| 91亚洲国产成人精品一区二三| 91夜夜未满十八勿入爽爽影院| 国产精品久久久久久久久夜色| 在线视频精品| 韩国一区二区电影| 日本a在线观看| 欧美日韩天堂| 欧美日韩福利在线观看| 777777国产7777777| 精品国产一区二区三区小蝌蚪| 精品偷拍一区二区三区在线看| 中国黄色片视频| 国产精品白浆| 亚洲国产精品美女| 中国一级特黄录像播放| 久久久久久毛片免费看| 亚洲第一福利网| 野战少妇38p| 成功精品影院| 亚洲精品美女在线| 女人被狂躁c到高潮| 亚洲va久久| 亚洲天堂色网站| 91网站免费视频| 国产精品密蕾丝视频下载 | 亚州欧美日韩中文视频| 国产一区二区视频在线观看免费| 希岛爱理av一区二区三区| 粗暴蹂躏中文一区二区三区| 欧美三级 欧美一级| 欧美全黄视频| 91成品人片a无限观看| 五月婷婷视频在线| 毛片一区二区| 国产美女精品免费电影| 99在线精品视频免费观看20| 国产不卡一区视频| 久久www免费人成精品| 蜜桃成人在线视频| 中文字幕亚洲不卡| 青青草视频在线视频| 九色porny自拍视频在线播放| 色综合久久中文字幕综合网| 韩国中文字幕av| 三级在线观看视频| 欧美日韩亚洲综合一区二区三区| 青青草原播放器| 国产成人精品福利| 在线观看国产精品淫| 国产黄在线免费观看| 夜夜嗨网站十八久久| 国产精品久久久久久久久免费看| 国产三级自拍视频| 99国产精品视频免费观看| 亚洲精品国产精品国自产| 亚洲小说区图片| 色婷婷综合在线| 又色又爽又黄18网站| 国产一区99| 欧美国产日韩一区二区| 欧美日韩一级黄色片| 国产精品一二三| 日韩国产精品一区二区| 中文字幕在线观看网站| 91福利区一区二区三区| 苍井空张开腿实干12次| 伊人久久综合影院| 欧美成人精品在线| 波多野结衣午夜| 成人免费观看男女羞羞视频| 亚洲精品久久区二区三区蜜桃臀 | 欧美日韩国产页| www.com黄色片| 九九热播视频在线精品6| 精品国产一区二区三区久久久| 日本少妇裸体做爰| 国产成人午夜精品影院观看视频 | 在线不卡av电影| 亚洲午夜电影| 91久久中文字幕| 91在线直播| 色噜噜夜夜夜综合网| 中国xxxx性xxxx产国| 一区二区三区四区日韩| 国产精品一区二区三区在线播放| 四虎在线视频免费观看| 亚洲精品视频免费观看| 50路60路老熟妇啪啪| av成人app永久免费| 最新国产成人av网站网址麻豆| 久久一区二区三区视频| 国产精品白丝jk黑袜喷水| 无码免费一区二区三区免费播放| 国产资源在线观看入口av| 日韩欧美激情一区| 日本在线一级片| 激情都市一区二区| 亚洲激情一区二区| 国产亚洲欧美日韩精品一区二区三区 | 亚洲一区二区三区视频在线| 国产精欧美一区二区三区白种人| 日本欧美国产| 国产精品永久免费观看| 暖暖视频在线免费观看| 亚洲黄色在线视频| 好吊操视频这里只有精品| 欧美阿v一级看视频| 亚洲自拍偷拍色片视频| 国产乱色在线观看| 日韩欧美一级精品久久| 久久黄色小视频| 国产成人综合网| 国产高清不卡无码视频| 一区二区三区四区高清视频| 久久久久久一区二区三区| 国产综合无码一区二区色蜜蜜| 一区二区三区欧美| 精品人妻一区二区免费| 99在线|亚洲一区二区| 国产日本一区二区三区| 日韩理论视频| 亚洲人成人99网站| 中文字幕自拍偷拍| 国产精品久久久久久久久免费樱桃| 依人在线免费视频| 欧美成人一品| 国产一区在线免费观看| 美女91在线看| 一区二区三区日韩在线| 国产精品久久久久久免费播放| 亚洲男人的天堂网| 国产人妻精品午夜福利免费| 亚洲伦伦在线| 茄子视频成人在线观看| 日日夜夜精品| 欧美精品久久久久久久| 免费在线国产| 69堂国产成人免费视频| 黄色小视频在线免费看| 久久精品一区四区| 国产一区二区在线观看免费视频| 欧美特黄a级高清免费大片a级| 精品日韩欧美| 亚洲精品伦理| 久久久视频在线| 国产日本在线| 精品欧美乱码久久久久久1区2区| 麻豆久久久久久久久久| 国产精品色哟哟| 中国一级特黄录像播放| 蜜桃一区二区三区在线观看| 日韩中文字幕亚洲精品欧美| 麻豆精品少妇| 91久久精品日日躁夜夜躁国产| 丁香高清在线观看完整电影视频| 日韩成人激情视频| 国产精品久久久久久久久毛片 | 国产精品久久久久aaaa樱花 | 国产精品毛片一区二区在线看舒淇 | 激情五月婷婷小说| 国产亚洲人成网站| 精品人妻一区二区三区免费| 麻豆精品网站| av片在线免费| 日韩成人免费| 国产一区二区免费电影| 亚洲狼人综合| 国产成+人+综合+亚洲欧洲| 少女频道在线观看高清| 尤物九九久久国产精品的特点| 亚洲国产成人在线观看| 欧美视频精品在线| 亚洲天堂一区在线| 亚洲综合一区在线| 中文字幕在线观看2018| 91麻豆国产精品久久| wwwww在线观看| 韩国av一区二区三区四区| caoporn超碰97| 国产精品综合| 国产日韩欧美精品在线观看| 亚洲欧美偷拍自拍| 午夜欧美性电影| 希岛爱理av免费一区二区| 国产精品v欧美精品v日韩| 9999精品视频| 成人av资源在线播放| 免费污视频在线一区| 97超级碰碰碰| 草草在线视频| 国内精品免费午夜毛片| 神马午夜伦理不卡| 欧美黑人性视频| 中文在线免费| 久久99国产综合精品女同| 国产一二区在线| 麻豆乱码国产一区二区三区| av资源网站在线观看| 伊人久久久久久久久久| 国产经典自拍视频在线观看| 亚洲人高潮女人毛茸茸| 国际av在线| 伊人久久精品视频| 欧美日韩欧美| x99av成人免费| 久久综合网导航| 久久久国产影院| av网站大全在线| 九九精品视频在线观看| 四虎影院观看视频在线观看| 色综合视频网站| 日本动漫理论片在线观看网站| 欧美多人爱爱视频网站| 性欧美高清come| 国内精品久久久久影院优| zzzwww在线看片免费| 热re99久久精品国产66热| 毛片免费看不卡网站| 国产精品wwwwww| 欧美高清影院| 18成人在线| 菁菁伊人国产精品| 日本不卡一区二区三区视频| 欧美一区电影| 欧美日韩一级在线| 影音先锋久久| 国产自偷自偷免费一区 | 在线观看亚洲精品视频| 中文字幕日产av| 日韩午夜精品视频| 午夜在线视频观看| 精品亚洲国产成av人片传媒| 国产三级在线免费| 久久天天躁夜夜躁狠狠躁2022| 羞羞的视频在线看| 日韩av手机在线| 91视频亚洲| 久久综合九色99| 国产精品88久久久久久| 日本大片免费看| 久久婷婷影院| 91视频福利网| 久久久精品欧美丰满| 久草视频手机在线| 欧美性猛交xxxx久久久| 一级成人免费视频| 日韩av在线精品| 美女羞羞视频在线观看| 韩剧1988在线观看免费完整版| 亚洲综合av一区二区三区| 99久久精品久久久久久ai换脸| 国产成人影院| 无码熟妇人妻av在线电影| 日韩高清中文字幕一区| 亚洲国产精品第一页| 久久青草欧美一区二区三区| 多男操一女视频| 色8久久精品久久久久久蜜| www.国产欧美| 中文字幕少妇一区二区三区| 国产第一页在线视频| 国产美女久久久| 丝袜av一区| 国产黄色激情视频| 蜜臀av性久久久久av蜜臀妖精| 国产伦精品一区二区三区精品| 国产精品国产三级国产普通话三级| 国产精品第108页| 777欧美精品| 电影在线高清| 日本不卡高字幕在线2019| 中文字幕日韩高清在线| 亚洲欧洲国产日韩精品| 噜噜噜在线观看免费视频日韩 | 国产a级免费视频| 在线观看91久久久久久| www.com.cn成人| 国产青春久久久国产毛片| 综合激情视频| 中文国产在线观看| 亚洲国产岛国毛片在线| 天堂网视频在线| 日韩国产精品亚洲а∨天堂免| 特级毛片在线| 亚洲一区二区三区成人在线视频精品 | 老司机精品视频在线| 在线 丝袜 欧美 日韩 制服| 性久久久久久久久久久久| 亚洲精品久久久狠狠狠爱 | 中文字幕在线观看成人| 欧美乱熟臀69xxxxxx| av亚洲在线| 国产成人一区二区三区电影| 欧美激情极品| 欧美在线一区视频| 9久草视频在线视频精品| 国产一级特黄a高潮片| 欧美不卡一区二区三区四区| av网站在线免费看推荐| 91九色国产在线| 中文字幕日韩一区二区不卡 | 99国产欧美另类久久久精品| 日韩福利片在线观看| 亚洲成人国产精品| caoporn视频在线观看| 国产一区国产精品| 国产精品日本| 国产熟妇搡bbbb搡bbbb| 日韩欧美国产网站| 成人福利在线| 91精品国产综合久久久久久久久| 色爱综合网欧美| 黄色aaaaaa| 一区二区三区丝袜| 亚洲h视频在线观看| 性欧美xxxx| 国产永久精品大片wwwapp| 三上悠亚av一区二区三区| 亚洲欧美怡红院| 精品国产av一区二区三区| 欧美高清视频在线播放| 精品资源在线| 亚洲高清在线免费观看| 1区2区3区国产精品| www.国产麻豆| 日本精品久久中文字幕佐佐木| 欧美日韩水蜜桃| 想看黄色一级片| 亚洲国产视频一区二区| 天堂中文在线8| 国产日韩精品在线| 国产精品多人| 欧美日韩高清丝袜| 在线不卡中文字幕播放| av影视在线看| 日韩av一区二区三区在线观看 | 日本久久精品电影| 毛片在线播放a| 精品国产一二| 九色综合狠狠综合久久| 国产一级做a爱免费视频| 亚洲色图35p| 日韩一区二区三区精品| 亚洲中文字幕无码中文字| 国产精品亲子伦对白| 亚洲av永久纯肉无码精品动漫| 国产99久久精品一区二区永久免费 | 日本www.色| 亚洲精品成人a在线观看| 深夜福利在线看| 96pao国产成视频永久免费| 国产亚洲精品v| 青花影视在线观看免费高清| 日韩精品在线视频| 精品国产伦一区二区三区观看说明| 国产在线精品91| 亚洲日本中文字幕区| 牛牛热在线视频| 国产高清在线精品一区二区三区| 久久蜜桃精品| 日本免费一二三区| 久久视频在线看|