浏览代码
Merge pull request #74 from Unity-Technologies/camera_config
Merge pull request #74 from Unity-Technologies/camera_config
Add a sample for the camera configuration API/1.5-preview
GitHub
6 年前
当前提交
828c45a3
共有 4 个文件被更改,包括 885 次插入 和 43 次删除
-
811Assets/Scenes/CameraImage.unity
-
17Assets/Scripts/TestCameraImage.cs
-
89Assets/Scripts/CameraConfigController.cs
-
11Assets/Scripts/CameraConfigController.cs.meta
811
Assets/Scenes/CameraImage.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
using System.Collections.Generic; |
|||
using UnityEngine; |
|||
using UnityEngine.UI; |
|||
using UnityEngine.XR.ARExtensions; |
|||
using UnityEngine.XR.ARFoundation; |
|||
|
|||
/// <summary>
|
|||
/// Populates a drop down UI element with all the supported
|
|||
/// camera configurations and changes the active camera
|
|||
/// configuration when the user changes the selection in the dropdown.
|
|||
///
|
|||
/// The camera configuration affects the resolution (and possibly framerate)
|
|||
/// of the hardware camera during an AR session.
|
|||
/// </summary>
|
|||
[RequireComponent(typeof(Dropdown))] |
|||
public class CameraConfigController : MonoBehaviour |
|||
{ |
|||
List<string> m_ConfigurationNames; |
|||
|
|||
Dropdown m_Dropdown; |
|||
|
|||
/// <summary>
|
|||
/// Callback invoked when <see cref="m_Dropdown"/> changes. This
|
|||
/// lets us change the camera configuration when the user changes
|
|||
/// the selection in the UI.
|
|||
/// </summary>
|
|||
/// <param name="dropdown">The <c>Dropdown</c> which changed.</param>
|
|||
public void OnValueChanged(Dropdown dropdown) |
|||
{ |
|||
var cameraSubsystem = ARSubsystemManager.cameraSubsystem; |
|||
if (cameraSubsystem == null) |
|||
return; |
|||
|
|||
var configurationIndex = dropdown.value; |
|||
|
|||
// Check that the value makes sense
|
|||
var configurations = cameraSubsystem.Configurations(); |
|||
if (configurationIndex >= configurations.count) |
|||
return; |
|||
|
|||
// Get that configuration by index
|
|||
var configuration = configurations[configurationIndex]; |
|||
|
|||
// Make it the active one
|
|||
cameraSubsystem.SetCurrentConfiguration(configuration); |
|||
} |
|||
|
|||
void Awake() |
|||
{ |
|||
m_Dropdown = GetComponent<Dropdown>(); |
|||
m_Dropdown.ClearOptions(); |
|||
m_ConfigurationNames = new List<string>(); |
|||
} |
|||
|
|||
void PopulateDropdown() |
|||
{ |
|||
var cameraSubsystem = ARSubsystemManager.cameraSubsystem; |
|||
if (cameraSubsystem == null) |
|||
return; |
|||
|
|||
// No configurations available probably means this feature
|
|||
// isn't supported by the current device.
|
|||
var configurations = cameraSubsystem.Configurations(); |
|||
if (configurations.count == 0) |
|||
return; |
|||
|
|||
// There are two ways to enumerate the camera configurations.
|
|||
|
|||
// 1. Use a foreach to iterate over all the available configurations
|
|||
foreach (var config in configurations) |
|||
m_ConfigurationNames.Add(config.ToString()); |
|||
m_Dropdown.AddOptions(m_ConfigurationNames); |
|||
|
|||
// 2. Use a normal for...loop
|
|||
var currentConfig = cameraSubsystem.GetCurrentConfiguration(); |
|||
for (int i = 0; i < configurations.count; i++) |
|||
{ |
|||
// Find the current configuration and update the drop down value
|
|||
if (currentConfig == configurations[i]) |
|||
m_Dropdown.value = i; |
|||
} |
|||
} |
|||
|
|||
void Update() |
|||
{ |
|||
if (m_ConfigurationNames.Count == 0) |
|||
PopulateDropdown(); |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 94b653a1faa6f4749ad83e77bcddfab4 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
撰写
预览
正在加载...
取消
保存
Reference in new issue