Initialer Upload neues Unity-Projekt

This commit is contained in:
Daniel Ocks
2025-07-21 09:11:14 +02:00
commit eeca72985b
14558 changed files with 1508140 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d12e9b3cf69c229449cc608a02edfd44
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,92 @@
# Conduit
Conduit is a productivity-enhancing framework within Voice SDK that extracts metadata from an apps codebase at edit time to help streamline the development process, as well as to speed up dispatching during runtime. It generates a manifest file from the app that captures details of the relevant components needed to understand the voice activation structures within that app. This manifest file is then used to help dispatch incoming voice requests to the right callbacks.
# Benefits to Using Conduit
There are a number of benefits to using Conduit instead of the traditional approach to handling the metadata. These include:
* You don't need to manually register your callbacks. You can simply tag them with the `MatchIntent` attribute.
* Callbacks are strongly typed. You don't need to parse Wit Response modules to get the values of the roles. You can just write your method accepting the parameters needed. For example, `SetVolume(int level)` automatically gets the `int` value for the level role supplied when a Set Volume request is made.
* Enumerations are automatically matched to entity types. For example, if you have `ChangeColor(Shape shape, Color color)` where `Shape` and `Color` are enums, those values will be automatically resolved as well, provided theyve been trained on Wit.ai.
* Improved performance over non-Conduit `MatchIntent`. When generating the manifest files, Conduit only uses reflection on the specific assemblies you tag with the `ConduitAssembly` attribute, rather than all available assemblies. This can result in up to a 90x faster initialization time. Additionally, during runtime, the dispatcher does not need to scan for the callbacks, as that information has already been captured in the manifest file.
* You can use static and instance methods as callbacks.
* Conduit is backwards compatible with existing `MatchIntent` attributes. In most cases, existing code will continue to work in the same way. For more information on this, see the **Current Limitations** section below.
# To use Conduit in your app
1. In the Unity editor, go to **Oculus > Voice SDK > Settings**, and select the *Use Conduit* option to enable Conduit.
![image](Images/UseConduitCheckbox.png)
2. Annotate your callback methods with the `MatchIntent` attribute.
3. Annotate the assemblies that contain your callbacks with the `ConduitAssembly` attribute. Conduit will skip all assemblies that are not annotated. This can be done by adding the following code to the `AssemblyInfo.cs` file (or another code file in the assembly that contains your callbacks): `[assembly:ConduitAssembly]`
# Current Limitations
Conduit is currently in a beta version and, because of this, some functionality may not work as expected. If needed, you can disable Conduit in the **Voice SDK Settings** window to return your project to its prior state.
There are several known limitations at this time:
1. At the present time, only primitive types and enums are supported. In the meantime, you can get a Wit.ai **Response** module parameter in addition to the strongly-typed parameters by declaring it as one of the parameters.
2. While Conduit is backwards-compatible with legacy callback methods, the opposite is not true. A callback signature designed for Conduit (and which has a different parameter) will not work if you disable Conduit. If you expect to be switching frequently between Conduit and legacy matching, you may want to use the `ConduitAction` attribute instead.
3. Conduit attributes do not currently fully support multiple attributes on one callback method. While it should still invoke correctly, only the first attribute will currently be used for other metadata.
# Best Practices for Using Conduit to Design Voice SDK Callbacks
When designing the ontology of an app, consider how the flow will work end-to-end. The callback methods should be designed to map to the Wit.ai intents. While different structures may work, some will provide better accuracy and easier maintenance. Below are a few design tips to optimize your code for use with Voice SDK.
1. Avoid using string parameters where possible. When entities are well-defined, create an enum with the list of potential options: For example, rather than using this:
```
public void DropItem(string myItem)
```
Try this instead:
```
public void DropItem(ItemType myItem)
```
2. When intents are similar, consider unifying them and factoring out the concepts that vary in the entities they operate on, and then fan out from your callout in order to execute the logic you want. For example, rather than using this:
```
public void CastFireBall()
public void CastLightningBolt()
```
Try this instead:
```
enum SpellType {Fireball, LightningBolt}
public void CastSpell(SpellType mySpell)
```
3. Instead of using `OnResponse` and `OnPartialResponse` events to assign callbacks, try annotating your callbacks directly in the code using Conduits `MatchIntent` attribute. This can reduce maintenance overhead when you change the methods name or signature. It can also allow you more flexibility in entity resolution.
4. Avoid manually parsing `WitResponseNode` unless absolutely necessary. If you just need to extract parameters, Conduit can automatically parse them for you. In this way, you can keep your code clear and concise should you make changes to your intents or slots. For example, instead of this:
```
public void CastSpell(WitResponseNode node)
{
// Logic to extract and parse into SpellType.
// Use SpellType here.
}
```
Try this:
```
public void CastSpell(SpellType mySpell)
{
// Use SpellType directly.
}
```
5. Avoid using string literals for finite entity values when possible. For example, rather than checking that the value of the direction slot is right, compare it directly to the enum value `Direction.Right`. This can make the code less error-prone and easier to maintain.
6. Avoid manually synchronizing Wit.Ai entity values with your code. Conduits Auto Sync feature will automatically provide a sync whenever you need synchronization. This can reduce the chances of human error, as well as saving time.
7. Use the **Specify Assemblies** functionality in Conduit to exclude unneeded assemblies whenever possible. Fewer assemblies will usually improve runtime performance as well as reducing the chance conflicts.
8. When starting off, using the **Relaxed Resolution** mode in Conduit may help you get up to speed more quickly. However, when possible, its best to disable this mode. Doing so will usually result in slightly improved runtime performance, as well as fewer false positives.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d3c7b6411c2a637478c26f92bab6ad4b
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 71cb586df64d3eb45ad5991527c0b7f8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,123 @@
fileFormatVersion: 2
guid: 1671e86f36fb2eb48a5f41896988c447
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1a48e92891831ea45824207b2bce72b2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 94a4be49d90a2554793758429b0f0452
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 396af1bb88d0b864fbd5e717ea7766a5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,135 @@
fileFormatVersion: 2
guid: 19b27aedc66387a4498eadde5cf95a81
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cda2489f8652789498f6b729439e29cd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,28 @@
# v57 Release Notes and Upgrade Guide
## Upgrading
### From Any Version
You will always get the cleanest experience by deleting your Assets/Oculus/Voice directory between updates, but it shouldn't be required.
### From The Last Version
If youre coming from v56, upgrading should be relatively smooth. You should be able to simply install the latest package on top of your existing install. As always deleting the Oculus/Voice directory before upgrading will provide the smoothest experience.
### From Older Versions
It is required that you delete your existing 'Assets/Oculus/Voice/Demo' directory before making this upgrade in order to remove the previous samples that may conflict with the newly updated samples. As always deleting the Oculus/Voice directory before upgrading will provide the smoothest experience. Simply installing the package should work and the Oculus cleanup tools will remove old files.
As of v49 we made a change to update our namespaces to match the new Meta branding. This means any code references you may have had to Voice SDK will need to have their using statements updated.
## Whats New
### In v57
* Coming Soon
### In v56
* TTS speakers now have pause & resume functionality.
* TTS speaker events added for OnComplete which is called following load failure, load abort, playback cancellation or playback completion.
* TTS voice sample updated to include pause button, to allow info scrolling & to use tts speaker request events via async sfx toggle.
### In v55
* Samples are now accessible in the Voice Hub.
* All samples have been cleaned up and split into their own directory to make them easier to follow.
* TTS voices sample improved to make trying out different voices & ssml sfx effects easier.
* TTS recently added a set of new voices. TTSWit component now has a dropdown to add new presets with voices you may not have used yet.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ce1a5341f047a8444bbb7904c19c8f3e
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: