TextFx 说明文档简单翻译

0

TextFx是好牛X的文字特效插件,编辑器也好强大,所以翻译了一下他的说明文档做个备份。这是好久之前翻译的了,所以记得好像有些部分没有翻译,应该是自认为没什么用的部分吧。。。。好吧,有多少贴多少。

 

1. Basic Setup

Importing the plugin

导入包之后会看到TextFX文件夹。

里面会有 Editor 和 Scripts 文件夹。 在Scripts文件夹中有个Effectmanager.cs脚本,这是你唯一需要用到的组件。

Setting Up a Text Animation Object

1. 在场景中创建一个空对象

2. 在这个空对象上添加EffectManager组件

clipboard

3. 设置你想要的字体文件到 Font属性上。或设置你的bitmap字体文件数据和他的material到FontDataFile 与 Font Material属性上。

4. 在Text属性上输入你想要使用的文字。然后你就看到文字出现在场景中了。

clipboard[1]

5. 这里有一些有效的设置可以调整文本的基本的布局/外观:

    * Text – 显示的以及被动画效果影响的文字

    * Display Axis – 表示文字是横向还是纵向的

    * Text Anchor – 表示文本排列的位置(左,右,中间)

    * Character Size – 文本字体的大小。默认为1

    * Line Height – 就是行间隔。默认为1

    * Letter Spacing Offset – 字符间隔

    * Max Width – 文字一行最大的宽度,超过这个宽度会自动到下一行(我试了下,没效果??)。在编辑器中用红线表示。

    * Play On Start? – 是否在EffectManager第一次active的时候就自动执行动画

    * On Finish Action – 当动画结束的时候发生什么

6. 当你觉得看起来还不错的时候就可以调整位置啊什么的,然后就可以配置动画了。

2. Making/Using A Bitmap Font

就是bitfont。。。。

3. Creating An Animation

首先打开TextFX

clipboard[2]

clipboard[3]

General Setting

基础设置:

clipboard[4]

* 预览控制按钮:Play,Reset.

* Text – 显示的文本

* Animate Per – 执行动画的单位,每字符,每个词,每一行。这个值可以自定义,写你自己的动画。

* Time – 使用Unity中的时间还是使用实际时间。

Adding An Animation

默认情况下,一个新的EffectManager对象是没有任何动画设置的,所以你需要添加一个,点击“Add Animation”按钮

clipboard[5]

可能会有多个动画,使用 Anim(N) 来选择他们。

每个字符只能被一个动画控制,所以你可以指定一个字符子集,通过 Animate on:

clipboard[6]

TextFX Actions

每个TextFX动画是一个序列,拥有一个或多个Actions.

一个Action定义了吻门从开始状态到结束状态的转换。

你需要设置开始于结束的转换的colour,position,rotation,scale,还有Duration

每个Action都有以下选项:

clipboard[7]

1. Action Type – 表明这个action是一个普通的animation sequence,还是一个用来停止animation的break action。

2. Letter Anchor – 在这个action中每个字符的锚点。比如字符从那部分开始/结束旋转,缩放

3. Ease Type – 不介绍了。

4. Start/End Colour Gradients? – 使用一个flat颜色来标识开始/结束颜色,还是使用一个4颜色(字符mesh的4个角)混合。

5. Start/End Colour – action开始/结束时的颜色

6. Set Position Axis Ease? – 允许你覆盖”Ease Type”,为每个position轴独立选择easeType。

7. Start/End Position – action开始/结束时的位置

8. Force This Position? – 如果选中,将会强制将所有字符放到这个位置,忽略使用默认的Character Space.

9. Set Rotation Axis Ease? – 允许你覆盖“Ease Type”为每个rotation轴独立选择easeType

10. Start/End Euler Rotation – action开始/结束时的欧拉角度。

11. Set Scale Axis Ease? – 允许你覆盖”Ease Type”为每个Scale轴独立选择EaseType

12. Start/End Scale – action开始/结束时的缩放值

13. Force Same Start? – 强制所有字符在开始此Action的时候在同一时间执行。

14. Delay – 开始延迟

15. Duration – 动作整个过程的执行时间

16. Audio OnStart/OnFinish – action开始/结束时播放的Audio clip.在Audio And Patricle Effects中了解详细

17. Emitter OnStart/OnFinish – 粒子发射器动画的播放当action 开始/结束时。在Audio And Patricle Effects中了解详细

Advanced Action Setting

在action中每个主要的变换与时间参数都有额外的设置来定义延展每个字符。这些可以帮助你实现更多的特效。

* Constant(固定的) variables – 所有字符使用同一个值

clipboard[8]

* Random variables – 字符将每次使用一个随机从From 与 To 之间的值。

clipboard[9]

* Eased variables – 你文本的第一个字符需要有from值,最后一个字符需要有To值,中间的会进行插值。

你可以通过设置easing function来改变每个字符的过程值。

clipboard[10]

* 3-way Eased variables – 类似于之前的2-way,出了一个中间值。从from到这个中间值,然后从中间值到To。

clipboard[11]

More Than One Action

当你增加一个额外的action的时候,你会注意到一些细微的差别。

为了保存时间设置,你的第二个以及所有的子action都会继承前一个action的时间, 通过勾选Offset Prev?

这将会隐藏所有Start状态的设置。你只需要设置他怎么变化到这个action即可。

你也可以取消选择这个徐昂想,这样你就可以定义你自己的开始状态,但要当心可能导致不太和谐的动画过程。

clipboard[12]

Offset Variables From Last State

其实每个参数选项都可以进行继承前一个action的操作,当然除了第一个action中的参数。使用 Offset From Last?选项。

如果值为0,则会保持前一个状态的值。

如果前一个状态值是随机的,这种设置就会非常有用,

clipboard[13]

Per-Axis Easing Function Overrides

在你的Action的任何转换中,你都可以为每个轴设置独立的变化ease.

这允许你创建更多动态的移动效果。

试着唯爱你的位置变换改写轴easing,将会非常cool!

clipboard[14]

4. Advanced Animations

Break State Actions

你可以创建一个暂停状态通过创建 Break-State Action.

设置Action Type为BREAK将会暂停动画一段时间,这个时间是durations

如果时间值<=0,则意味着永远暂停在这个点。

如果动画在暂停状态,则可以通过调用 ContinueAnimation 来强制暂停结束,并开始执行下一个Action

看看脚本吧骚年,你会了解更多。

clipboard[15]

Custom Animation Letters

通过Animate On选项可以指定动画发生在哪些字符上面。默认的一个动画会影响所有的字符,但你可以选择所有一个子集。

注意:每个字符只能被一个动画影响。所以如果你使用了多个动画,那就必须确保其他动画没有影响到同一个字符。

clipboard[16]

5. Loops

Loops Menu

你可以设置你的一个或多个Action进行循环。

在窗口的左边你可以找到Loops Menu.

这里你可以看到当前可以循环的动画

clipboard[17]

Adding A Loop

一个循环的是由一个开始action索引与一个结束Action索引定义,并且还有循环次数。

如果次数为<=0,则是无限循环。

这里有两种循环:

* Normal loop : 就是那个从startIndex到endIndex,完成一遍之后再从startIndex开始

* ReversLoop : 

最后还有个DFO(Delay First Only).which will cause your loop to only apply action timing delays

for the first forward pass through the loop. This stops the letters getting more and more out of sync with

each loop iteration. Delays which are constant across all letters will still be applied, as these won’t

affect the sequencing between letters.

当你添加了一个循环,左边就可以看到一个Action树。

注意:点击并拖拽一个节点到另一个节点可以创建一个loop

注意:loop是可以嵌入到其他loop中的,但不能与其他loop交叉。比如一个0->2,另一个1->3,这不行!!

clipboard[18]

上面这个例子:

* 循环0两次

* reverse循环1,2三册

* 一直循环3

6 Audio And Particle Effects

Adding an Audio Clip

clipboard[19]

~~~

Adding a Particle Effect

clipboard[20]

Audio Toolkit 说明翻译

0

Audio Toolkit在其官方网站的一些说明,我做了写汉化,因为自己记性差,到下次用的时候可能就又要返回头去看说明,所以索性就先翻译一下,方便以后查阅。都是按自己的理解翻译的,如果有什么错误,可以指出。

 

 

How To Use:

* 创建一个GameObject命名为”AudioController”,并添加AudioComtroller脚本。这个对象唯一。

* 创建一个AudioObject prefab包含以下组件:Unity本身的AudioSource,AudioObject,PoolableObject(如果你想用pool的话)

clipboard

*然后在这个prefab上自定义你的AudioSource参数。下一步,指定你的自定义的这个prefab到AudioController中的“audio Object”参数上:

clipboard[1]

*创建你的音频目录,在AudioController的属性面板中。比如”Music”,”SFX”等等。

clipboard[2]

*audio要能执行需要创建一个”audio item” 在指定的目录中,并且是需要唯一名称。

你也可以从project面板中选择多个audio片段然后点击”Add Selected Audio clips”.这会为每个片段创建一个audio item.

clipboard[3]

*如果你愿意,你也可以为你的audio Item创建多个子item.一个子item指向实际的音频文件。如果拥有了超过一个的子item,则Audio Toolkit将会随机播放,或按照一定的顺序播放,你可以进行设置。

你也可以从Project视图中选择多个audio片段,然后点击”Add Selected audio clips”按钮,你就会为每个片段都创建为一个子item。

clipboard[4]

要播放一个audio item, 只需要调用static function:

AudioController.Play( “MyUniqueAudioItemName” )

使用AudioController.PlayMusic( “MusicAudioItemName” )来播放音乐,这个函数保证在同一时间只能有一个音乐文件在播放,在音乐转换时可以由淡入淡出的效果,可以再AudioController中配置。

进一步的例子:

AudioController.Play( “MySoundEffect1” );
AudioController.Play( “MySoundEffect2”, new Vector3( posX, posY, posZ ) );
AudioController.PlayMusic( “MusicTrack1” );
AudioController.SetCategoryVolume( “Music”, 0.5f );
AudioController.PauseMusic();

///PoolableObject文件头说明///////////////////////////////////////////////////////////////////////////////////////////

用法:

把PoolableObject脚本组件添加到想要入池的prefab上。你可以在属性面板中设置该对象在池中的最大值。

替换所有Instantiate(prefab)的地方,替换为 ObjectPoolController.Instantiate(prefab).

替换所有Destroy(objectInstance)为 ObjectPoolController.Destroy(objectInstance)

注意Awake() 与 OnDestroy()也会被调用,不管怎样,要确保所有组件数据在Awake中能够初始化所有可能在生命历程中会被改变的数据。

Start()也会被调用,紧随Awake()在ObjectPoolController.Instaniate(…)中,不会在下一帧调用。

如果一个池中物的父节点是非池中物,则这个父节点必须使用ObjectPoolController.Destroy(…)来进行destroy操作。

要明白OnDestroy()会被调用多次:

a) 当object被添加到池中的时候会调用 ObjectPoolController.Destroy()

b) 当object确实被销毁的时候,比如加载新的场景时。

引用一个池中的对象不会变为null一旦一个object已经被”destroyed”并移到池中,使用PoolableReference如果你需要一些check。

PoolableObject说明:

添加这个脚本到你的prefab使他成为池中物。

查看ObjectPoolController来了解怎么设置池中的prefab.

下面这些消息是向池中物对象发送的:

Awake(),OnDestroy(),是当池中对象被active或deactive时。

这个方式就类似于一般behaviour的instantiated与destroy.

只有当 sendAwakeStartOnDestroyMessage 被选中时才会发送这两个消息。

OnPoolInstanceAwake 与 OnPoolableInstanceDestroy 是在当对象是确实的被实例化与销毁时调用。

因为当前Unity的机制问题,OnPoolableInstanceDestroy在Flash中不起作用。

OnPoolableObjectActivated 与 OnPoolableObjectDeactivated 是在池中对象active与deattive时调用。

这两个消息只有当 sendPoolableActivateDeactivateMessage被选中时才发送。

ObjectPoolController说明:

一个静态类用于创建与销毁池中对象。

什么是池?。。。

池怎么工作?。。。

怎么在池中设置一个prefab:

首先是给这个prefab添加PoolableObject脚本组件。你可以在属性面板中设置这个prefab在池中的最大数量。

替换Instantiate(myprefab)为ObjectPoolController.Intantiate(myprefab)

替换Destroy(myObjectInstance)为ObjectPoolController.Destroy(myObjectInstance)

注意,要理解下面这个:

所有数据必须在Awake,Start中被初始化。

OnDestroy将会在这个object被Unity删除的时候被调用第二次。

如果一个池中物对象的父对象不是一个池中物,那这个扶对象被删除的时候也必须使用ObjectPoolControler.Destroy(…).

如果你持有一个池中物对象的引用,则ObjectPoolControll.Destroy之后这个引用不会被变为null,就像一般Unity对象的用法一样。这是因为这个对象仍然存在—只是在池中。

要确保你持有的这个池中物的引用是可用的,你必须使用PoolableReference

PoolableReference说明:

辅助类,用于解决当持有一个池中物的引用,但该池中物被ObjectPoolController.Destroy移回到池中时该引用变为null的情况。

一个组件要替掉一般的脚本组件的引用而是用池中物对象:

MyScriptComponent scriptComponent = PoolableObjectController.Instantiate(prefab).GetComponent<MyScriptComponent>();

var myReference = new PoolableReference<MyScriptComponent>(scriptComponent);

if(myReference.Get() != null) // 将会检测这个实例化的是否仍属于源对象

{

    myReferrence.Get().MyComponentFunction();

}

Audio Toolkit 说明翻译

0

Audio Toolkit在其官方网站的一些说明,我做了写汉化,因为自己记性差,到下次用的时候可能就又要返回头去看说明,所以索性就先翻译一下,方便以后查阅。都是按自己的理解翻译的,如果有什么错误,可以指出。

 

 

How To Use:

* 创建一个GameObject命名为”AudioController”,并添加AudioComtroller脚本。这个对象唯一。

* 创建一个AudioObject prefab包含以下组件:Unity本身的AudioSource,AudioObject,PoolableObject(如果你想用pool的话)

clipboard

*然后在这个prefab上自定义你的AudioSource参数。下一步,指定你的自定义的这个prefab到AudioController中的“audio Object”参数上:

clipboard[1]

*创建你的音频目录,在AudioController的属性面板中。比如”Music”,”SFX”等等。

clipboard[2]

*audio要能执行需要创建一个”audio item” 在指定的目录中,并且是需要唯一名称。

你也可以从project面板中选择多个audio片段然后点击”Add Selected Audio clips”.这会为每个片段创建一个audio item.

clipboard[3]

*如果你愿意,你也可以为你的audio Item创建多个子item.一个子item指向实际的音频文件。如果拥有了超过一个的子item,则Audio Toolkit将会随机播放,或按照一定的顺序播放,你可以进行设置。

你也可以从Project视图中选择多个audio片段,然后点击”Add Selected audio clips”按钮,你就会为每个片段都创建为一个子item。

clipboard[4]

要播放一个audio item, 只需要调用static function:

AudioController.Play( “MyUniqueAudioItemName” )

使用AudioController.PlayMusic( “MusicAudioItemName” )来播放音乐,这个函数保证在同一时间只能有一个音乐文件在播放,在音乐转换时可以由淡入淡出的效果,可以再AudioController中配置。

进一步的例子:

AudioController.Play( “MySoundEffect1” );
AudioController.Play( “MySoundEffect2”, new Vector3( posX, posY, posZ ) );
AudioController.PlayMusic( “MusicTrack1” );
AudioController.SetCategoryVolume( “Music”, 0.5f );
AudioController.PauseMusic();

///PoolableObject文件头说明///////////////////////////////////////////////////////////////////////////////////////////

用法:

把PoolableObject脚本组件添加到想要入池的prefab上。你可以在属性面板中设置该对象在池中的最大值。

替换所有Instantiate(prefab)的地方,替换为 ObjectPoolController.Instantiate(prefab).

替换所有Destroy(objectInstance)为 ObjectPoolController.Destroy(objectInstance)

注意Awake() 与 OnDestroy()也会被调用,不管怎样,要确保所有组件数据在Awake中能够初始化所有可能在生命历程中会被改变的数据。

Start()也会被调用,紧随Awake()在ObjectPoolController.Instaniate(…)中,不会在下一帧调用。

如果一个池中物的父节点是非池中物,则这个父节点必须使用ObjectPoolController.Destroy(…)来进行destroy操作。

要明白OnDestroy()会被调用多次:

a) 当object被添加到池中的时候会调用 ObjectPoolController.Destroy()

b) 当object确实被销毁的时候,比如加载新的场景时。

引用一个池中的对象不会变为null一旦一个object已经被”destroyed”并移到池中,使用PoolableReference如果你需要一些check。

PoolableObject说明:

添加这个脚本到你的prefab使他成为池中物。

查看ObjectPoolController来了解怎么设置池中的prefab.

下面这些消息是向池中物对象发送的:

Awake(),OnDestroy(),是当池中对象被active或deactive时。

这个方式就类似于一般behaviour的instantiated与destroy.

只有当 sendAwakeStartOnDestroyMessage 被选中时才会发送这两个消息。

OnPoolInstanceAwake 与 OnPoolableInstanceDestroy 是在当对象是确实的被实例化与销毁时调用。

因为当前Unity的机制问题,OnPoolableInstanceDestroy在Flash中不起作用。

OnPoolableObjectActivated 与 OnPoolableObjectDeactivated 是在池中对象active与deattive时调用。

这两个消息只有当 sendPoolableActivateDeactivateMessage被选中时才发送。

ObjectPoolController说明:

一个静态类用于创建与销毁池中对象。

什么是池?。。。

池怎么工作?。。。

怎么在池中设置一个prefab:

首先是给这个prefab添加PoolableObject脚本组件。你可以在属性面板中设置这个prefab在池中的最大数量。

替换Instantiate(myprefab)为ObjectPoolController.Intantiate(myprefab)

替换Destroy(myObjectInstance)为ObjectPoolController.Destroy(myObjectInstance)

注意,要理解下面这个:

所有数据必须在Awake,Start中被初始化。

OnDestroy将会在这个object被Unity删除的时候被调用第二次。

如果一个池中物对象的父对象不是一个池中物,那这个扶对象被删除的时候也必须使用ObjectPoolControler.Destroy(…).

如果你持有一个池中物对象的引用,则ObjectPoolControll.Destroy之后这个引用不会被变为null,就像一般Unity对象的用法一样。这是因为这个对象仍然存在—只是在池中。

要确保你持有的这个池中物的引用是可用的,你必须使用PoolableReference

PoolableReference说明:

辅助类,用于解决当持有一个池中物的引用,但该池中物被ObjectPoolController.Destroy移回到池中时该引用变为null的情况。

一个组件要替掉一般的脚本组件的引用而是用池中物对象:

MyScriptComponent scriptComponent = PoolableObjectController.Instantiate(prefab).GetComponent<MyScriptComponent>();

var myReference = new PoolableReference<MyScriptComponent>(scriptComponent);

if(myReference.Get() != null) // 将会检测这个实例化的是否仍属于源对象

{

    myReferrence.Get().MyComponentFunction();

}

NGUI显示常用汉字

4

NGUI怎么显示汉字可以搜到很多教程,一般都是使用bmfont工具生成字体png与txt然后,在NGUI中CreateFont。
如果要将bmfont中所有字符导出是不实际的,而且会导致文件很大,所以在使用字符集时是将要显示的字符先事先用utf8格式保存到txt中,然后使用bmfont的“select chars from file”,但要知道自己用哪些字符又是不好统计的一件事,所以我就从网上找了份常用汉字表,将表中的文字导入到bmfont中,还好,不是很大。我下面会将这份字符表贴出来,谁想用可以直接复制下去,其中我也加了几个汉字的符号,有其他需要大家可以再加,但要注意保存时要用utf8格式。
制作这份常用汉字的字体和一般步骤是相同的,但导出参数要改一下:
image_thumb.png

主要是尺寸那里改为2048X2048的,小的话会生成多个png文件,nGUI好像是不支持的。

为了让字体好看些,可以找些好看的字体,个人非商业应用一般是可以的,我找了个萝莉体。。
下载下字体后将字体文件保存到 系统盘:\Windows\Font中,Windows会自动安装字体,然后在bmfont的FontSetting中就会出现这个字体了:

image_thumb.png

 

其中的 size(字号) 可能要多调试几次才能得到好的效果。OK,看下我的效果图,哈哈:

image.png

 

下面是常用汉字表,其中一些符号是我自己打上的,在实际使用中可能还会用到其他的字,那就只能一边调试一边使用了..

■啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱碱拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利僳例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座幔侃?。!,《》“”:;、【】——¥