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();

}