- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
95 lines
2.4 KiB
Plaintext
95 lines
2.4 KiB
Plaintext
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
namespace UnityStandardAssets.Vehicles.Car
|
|
{
|
|
[RequireComponent(typeof (AudioSource))]
|
|
public class WheelEffects : MonoBehaviour
|
|
{
|
|
public Transform SkidTrailPrefab;
|
|
public static Transform skidTrailsDetachedParent;
|
|
public ParticleSystem skidParticles;
|
|
public bool skidding { get; private set; }
|
|
public bool PlayingAudio { get; private set; }
|
|
|
|
|
|
private AudioSource m_AudioSource;
|
|
private Transform m_SkidTrail;
|
|
private WheelCollider m_WheelCollider;
|
|
|
|
|
|
private void Start()
|
|
{
|
|
skidParticles = transform.root.GetComponentInChildren<ParticleSystem>();
|
|
|
|
if (skidParticles == null)
|
|
{
|
|
Debug.LogWarning(" no particle system found on car to generate smoke particles", gameObject);
|
|
}
|
|
else
|
|
{
|
|
skidParticles.Stop();
|
|
}
|
|
|
|
m_WheelCollider = GetComponent<WheelCollider>();
|
|
m_AudioSource = GetComponent<AudioSource>();
|
|
PlayingAudio = false;
|
|
|
|
if (skidTrailsDetachedParent == null)
|
|
{
|
|
skidTrailsDetachedParent = new GameObject("Skid Trails - Detached").transform;
|
|
}
|
|
}
|
|
|
|
|
|
public void EmitTyreSmoke()
|
|
{
|
|
skidParticles.transform.position = transform.position - transform.up*m_WheelCollider.radius;
|
|
skidParticles.Emit(1);
|
|
if (!skidding)
|
|
{
|
|
StartCoroutine(StartSkidTrail());
|
|
}
|
|
}
|
|
|
|
|
|
public void PlayAudio()
|
|
{
|
|
m_AudioSource.Play();
|
|
PlayingAudio = true;
|
|
}
|
|
|
|
|
|
public void StopAudio()
|
|
{
|
|
m_AudioSource.Stop();
|
|
PlayingAudio = false;
|
|
}
|
|
|
|
|
|
public IEnumerator StartSkidTrail()
|
|
{
|
|
skidding = true;
|
|
m_SkidTrail = Instantiate(SkidTrailPrefab);
|
|
while (m_SkidTrail == null)
|
|
{
|
|
yield return null;
|
|
}
|
|
m_SkidTrail.parent = transform;
|
|
m_SkidTrail.localPosition = -Vector3.up*m_WheelCollider.radius;
|
|
}
|
|
|
|
|
|
public void EndSkidTrail()
|
|
{
|
|
if (!skidding)
|
|
{
|
|
return;
|
|
}
|
|
skidding = false;
|
|
m_SkidTrail.parent = skidTrailsDetachedParent;
|
|
Destroy(m_SkidTrail.gameObject, 10);
|
|
}
|
|
}
|
|
}
|