GameObject[] MyEnemies = GameObject.FindGameObjectsWithTag("Enemy");
此外,文本数据可以由工具生成和解析,从而可以自动创建和分析场景。 参考链接
使用 Aim、Body 和 Noise 属性来指定虚拟相机如何动画位置、旋转和其他属性。当 Cinemachine Brain 或时间轴将 Unity 相机的控制转移到虚拟相机时,虚拟相机将应用这些设置到 Unity 相机上。 参考链接
Microphone 类将捕获的音频保存为音频剪辑资产,之后可以将其存储为 OGG 文件。 参考链接
参考链接Unity 的默认单位是米(虚幻引擎也是如此)。如果你记住这一点,并使用以米为单位的单位建模,灯光系统将以最小的伪影工作。
哪个 MonoBehaviour 方法在编辑器模式下默认运行?
参考链接 每当画布上的元素被更新时,整个画布都会重新绘制。如果元素从不被更新,则将它们保留在一个画布上是理想的。
[Space(20)] Public string PlayerName;
20 像素的空白
参考链接 这是一种在不编写新的检视器脚本的情况下自定义检视器的好方法。
参考 OnStateMachineEnter()
和 OnStateMachineExit()
是 StateMachineBehavior 类的方法,用于处理这个问题。AnimatorClipInfo 显示有关当前播放的剪辑的信息,AnimatiorUtility 处理变换层次结构,而 AnimationInfo 在 5.0 版本中被移除。
public Animator avatar;
public Transform lookAtObj;
void OnAnimatorIK(int layerIndex)
{
avatar.SetLookAtPosition(lookAtObj).position;
avatar.SetLookAtWeight(If);
}
当您使用摄影测量学从现实世界中扫描模型并将这些模型带入 Unity(或任何渲染器)时,您会注意到光照信息已嵌入到纹理中。您可以使用各种在线工具删除嵌入式的光照信息,但甚至 Unity themeless 也为此编写了一个自定义工具;请查看!
画重新定位
简化数学:Unity 内部使用四元数来避免吉姆巴锁。当两个轴对齐时,欧拉角 XYZ(俯仰、偏航和滚动)轴可能会锁定。Quaternion.Euler 将提供的欧拉数转换为内部使用的 Quarternion,以防止此问题。
参考对象 obj 在当前 Update 循环之后立即销毁,或者在指定的 t 秒之后销毁。
官方 Unity 教程:音频衰减是关于能量损失的技术,通常称为 "增益"。ParamEQ 允许您改变音频的频率 - "音调",但不支持 C#。音频 Mixer 组允许您控制音频效果,但不通过 C#。
参考Mip Maps 是一种技术,通过在同一文件中包含图像的较小副本,提高图像质量并降低渲染速度,以牺牲存储空间。动画事件允许您在时间线上的特定点调用函数。
参考PlayableDirector 组件存储时间线实例与时间线资源之间的链接。
EventSystem 不是时间轴功能,包也不是。时间轴信号是标记的一个子功能,标记可以直接启动代码,而信号只能将信号发送到接收器。
public class Health : MonoBehavior
{
private float HealthPoints = 100f;
public float GetHealth()
{
return HealthPoints;
}
public void SetHealth(float Change)
{
HealthPoints += Change;
if (HealthPoints <= 0)
Destroy(gameObject);
}
}
public class Health : MonoBehavior
{
public UnityEvent OnHealthChanged;
private float HealthPoints = 100f;
public void SetHealth(float Change)
{
HealthPoints += Change;
OnHealthChanged.Invoke();
}
public void Die()
{
Destroy(gameObject);
}
}
public class Health : MonoBehavior { public float HealthPoints { get { return _healthpoints; } set { _healthpoints = value; if(_healthpoints <= 0 ) { Destroy(gameObjects); } } } private float _healthpoints = 100f; }
public class Health : MonoBehaviour { public float HealthPoints = 100f; private void Update() { if (HealthPoints <- 0) Destroy(gameObject); } }
get
和 set
是使用 C# 属性的明确指示。参考
MonoBehaviour
的 Reset
方法何时会自动调用?参考Reset
在用户在检视器上下文菜单中点击重置按钮或者第一次添加组件时调用。此函数只在编辑器模式下调用。
ExecuteAlways
使脚本的实例始终执行,无论是作为播放模式的一部分还是在编辑模式下。默认情况下,MonoBehaviour 仅在播放模式下执行,仅当它们位于包含用户场景的主要舞台上的 GameObject 上时才执行。通过添加此属性,任何 MonoBehaviour 的实例都将在所有时间执行其回调函数。
EventSystem
类的 IsPointerOverGameObject
静态函数有助于创建哪种行为?c# transform.localRotation *= Quaternion.Euler(0f, RotSpeed * Time.deltaTime, 0f);
c# transform.Rotate(Vector3.right, RotSpeed * Time.deltaTime);
c# transform.RotateAround(Vector3.up, RotSpeed * Time.deltaTime);
c# transform.SetParent(null);