给需要描边的物体加上VRTK_Outline Object Copy Highlighter组件
给左右两个手柄添加如下代码:
using UnityEngine;
using VRTK;
using VRTK.Highlighters;
public class TestPointerManager : MonoBehaviour
{
public Color EnterColor,MarkerSetColor;
private VRTK_Pointer pointer;
private void Awake()
{
pointer = GetComponent<VRTK_Pointer>();
pointer.DestinationMarkerEnter += Pointer_DestinationMarkerEnter;
pointer.DestinationMarkerExit += Pointer_DestinationMarkerExit;
pointer.DestinationMarkerSet += Pointer_DestinationMarkerSet;
}
private void Pointer_DestinationMarkerEnter(object sender, DestinationMarkerEventArgs e)
{
HightLight(e.target, EnterColor);
}
private void Pointer_DestinationMarkerExit(object sender, DestinationMarkerEventArgs e)
{
throw new System.NotImplementedException();
}
private void Pointer_DestinationMarkerSet(object sender, DestinationMarkerEventArgs e)
{
HightLight(e.target, MarkerSetColor);
}
public void OnDestory()
{
pointer = GetComponent<VRTK_Pointer>();
pointer.DestinationMarkerEnter -= Pointer_DestinationMarkerEnter;
pointer.DestinationMarkerExit -= Pointer_DestinationMarkerExit;
pointer.DestinationMarkerSet -= Pointer_DestinationMarkerSet;
}
private void HightLight(Transform target,Color color)
{
VRTK_BaseHighlighter highlighter= (target != null ? target.GetComponent<VRTK_BaseHighlighter>() : null) ;
if (highlighter != null)
{
highlighter.Initialise();
if (color != Color.clear)
{
highlighter.Highlight(color);
}
else
{
highlighter.Unhighlight();
}
}
}
}