- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
88 lines
2.2 KiB
C#
88 lines
2.2 KiB
C#
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
|
//
|
|
// Purpose: Can be attached to the controller to collide with the balloons
|
|
//
|
|
//=============================================================================
|
|
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
namespace Valve.VR.InteractionSystem
|
|
{
|
|
//-------------------------------------------------------------------------
|
|
public class BalloonColliders : MonoBehaviour
|
|
{
|
|
public GameObject[] colliders;
|
|
private Vector3[] colliderLocalPositions;
|
|
private Quaternion[] colliderLocalRotations;
|
|
|
|
private Rigidbody rb;
|
|
|
|
//-------------------------------------------------
|
|
void Awake()
|
|
{
|
|
rb = GetComponent<Rigidbody>();
|
|
|
|
colliderLocalPositions = new Vector3[colliders.Length];
|
|
colliderLocalRotations = new Quaternion[colliders.Length];
|
|
|
|
for ( int i = 0; i < colliders.Length; ++i )
|
|
{
|
|
colliderLocalPositions[i] = colliders[i].transform.localPosition;
|
|
colliderLocalRotations[i] = colliders[i].transform.localRotation;
|
|
|
|
colliders[i].name = gameObject.name + "." + colliders[i].name;
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------
|
|
void OnEnable()
|
|
{
|
|
for ( int i = 0; i < colliders.Length; ++i )
|
|
{
|
|
colliders[i].transform.SetParent( transform );
|
|
|
|
colliders[i].transform.localPosition = colliderLocalPositions[i];
|
|
colliders[i].transform.localRotation = colliderLocalRotations[i];
|
|
|
|
colliders[i].transform.SetParent( null );
|
|
|
|
FixedJoint fixedJoint = colliders[i].AddComponent<FixedJoint>();
|
|
fixedJoint.connectedBody = rb;
|
|
fixedJoint.breakForce = Mathf.Infinity;
|
|
fixedJoint.breakTorque = Mathf.Infinity;
|
|
fixedJoint.enableCollision = false;
|
|
fixedJoint.enablePreprocessing = true;
|
|
|
|
colliders[i].SetActive( true );
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------
|
|
void OnDisable()
|
|
{
|
|
for ( int i = 0; i < colliders.Length; ++i )
|
|
{
|
|
if ( colliders[i] != null )
|
|
{
|
|
Destroy( colliders[i].GetComponent<FixedJoint>() );
|
|
|
|
colliders[i].SetActive( false );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------
|
|
void OnDestroy()
|
|
{
|
|
for ( int i = 0; i < colliders.Length; ++i )
|
|
{
|
|
Destroy( colliders[i] );
|
|
}
|
|
}
|
|
}
|
|
}
|