Boat Attack使用了Universal RP的许多新图形功能,可以用于探索 Universal RP 的使用方式和技巧。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

95 行
4.0 KiB

using UnityEngine;
using System;
namespace Cinemachine
{
/// <summary>
/// Asset that defines the rules for blending between Virtual Cameras.
/// </summary>
[DocumentationSorting(10, DocumentationSortingAttribute.Level.UserRef)]
[Serializable]
public sealed class CinemachineBlenderSettings : ScriptableObject
{
/// <summary>
/// Container specifying how two specific Cinemachine Virtual Cameras
/// blend together.
/// </summary>
[DocumentationSorting(10.1f, DocumentationSortingAttribute.Level.UserRef)]
[Serializable]
public struct CustomBlend
{
[Tooltip("When blending from this camera")]
public string m_From;
[Tooltip("When blending to this camera")]
public string m_To;
[Tooltip("Blend curve definition")]
public CinemachineBlendDefinition m_Blend;
}
/// <summary>The array containing explicitly defined blends between two Virtual Cameras</summary>
[Tooltip("The array containing explicitly defined blends between two Virtual Cameras")]
public CustomBlend[] m_CustomBlends = null;
/// <summary>Internal API for the inspector editopr: a label to represent any camera</summary>
public const string kBlendFromAnyCameraLabel = "**ANY CAMERA**";
/// <summary>
/// Attempts to find a blend curve which matches the to and from cameras as specified.
/// If no match is found, the function returns either the
/// default blend for this Blender or NULL depending on the state
/// of <b>returnDefaultOnNoMatch</b>.
/// </summary>
/// <param name="fromCameraName">The game object name of the from camera</param>
/// <param name="toCameraName">The game object name of the to camera</param>
/// <param name="defaultCurve">Curve to return if no curve found. Can be NULL.</param>
/// <returns></returns>
public AnimationCurve GetBlendCurveForVirtualCameras(
string fromCameraName, string toCameraName, AnimationCurve defaultCurve)
{
AnimationCurve anyToMe = null;
AnimationCurve meToAny = null;
if (m_CustomBlends != null)
{
for (int i = 0; i < m_CustomBlends.Length; ++i)
{
// Attempt to find direct name first
CustomBlend blendParams = m_CustomBlends[i];
if ((blendParams.m_From == fromCameraName)
&& (blendParams.m_To == toCameraName))
{
return blendParams.m_Blend.BlendCurve;
}
// If we come across default applicable wildcards, remember them
if (blendParams.m_From == kBlendFromAnyCameraLabel)
{
if (!string.IsNullOrEmpty(toCameraName)
&& blendParams.m_To == toCameraName)
{
anyToMe = blendParams.m_Blend.BlendCurve;
}
else if (blendParams.m_To == kBlendFromAnyCameraLabel)
defaultCurve = blendParams.m_Blend.BlendCurve;
}
else if (blendParams.m_To == kBlendFromAnyCameraLabel
&& !string.IsNullOrEmpty(fromCameraName)
&& blendParams.m_From == fromCameraName)
{
meToAny = blendParams.m_Blend.BlendCurve;
}
}
}
// If nothing is found try to find wild card blends from any
// camera to our new one
if (anyToMe != null)
return anyToMe;
// Still have nothing? Try from our camera to any camera
if (meToAny != null)
return meToAny;
return defaultCurve;
}
}
}