版本: Unity 6 (6000.0)
语言英语
  • C#

LightProbes.SetPositionsSelf

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>重试</a>几分钟后。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public bool SetPositionsSelf(Vector3[] positions, bool checkForDuplicatePositions);

参数

checkForDuplicatePositions 是否检查重复的光探测位置,这会导致性能下降。
positions 要设置的位置。

返回值

bool true 当位置设置成功时。否则为 false

描述

设置此 LightProbes 对象中存储的烘焙光探测的位置。

当您使用此方法更改烘焙光探测的位置时,必须调用 LightProbes.TetrahedralizeLightProbes.TetrahedralizeAsync 以完全应用更改。

设置重复的光探测位置会导致不正确的行为,例如出现黑色光探测。

以下脚本累加加载包含烘焙光探测的场景并移动光探测

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class MoveLightProbesExample : MonoBehaviour { void Start() { StartCoroutine(LoadSceneAndMoveLightProbes()); }

IEnumerator LoadSceneAndMoveLightProbes() { // Fully load a scene containing light probes additively. Scene additiveScene = SceneManager.LoadScene("AdditiveScene", new LoadSceneParameters(LoadSceneMode.Additive)); yield return null;

// Get the light probes for the scene. LightProbes lightProbes = LightProbes.GetInstantiatedLightProbesForScene(additiveScene);

// Move the light probes slightly. Vector3[] positions = lightProbes.GetPositionsSelf(); for (int i = 0; i < positions.Length; i++) { positions[i] += Vector3.one; } lightProbes.SetPositionsSelf(positions, true);

// Tetrahedralize to apply the changes to light probe positions. LightProbes.TetrahedralizeAsync(); } }

其他资源: LightProbes.countSelf.