Unity 广告牌技术

阅读: 评论:0

Unity 广告牌技术

Unity 广告牌技术

广告牌技术

简单说一下什么是广告牌技术,在游戏场景中,场景物体无论何时何地都会面向我们的视角,也就是相机。

using UnityEngine;
using System.Collections;public class NcBillboard : MonoBehaviour
{public		bool			m_bCameraLookAt;public		bool			m_bFixedObjectUp;public		bool			m_bFixedStand;public		enum AXIS_TYPE	{AXIS_FORWARD, AXIS_BACK, AXIS_RIGHT, AXIS_LEFT, AXIS_UP, AXIS_DOWN};public		AXIS_TYPE		m_FrontAxis;public		enum ROTATION	{NONE, RND, ROTATE}public		ROTATION		m_RatationMode;public		enum AXIS		{X=0, Y, Z};public		AXIS			m_RatationAxis		= AXIS.Z;public		float			m_fRotationValue	= 180;protected	float			m_fRndValue;protected	float			m_fTotalRotationValue;protected	Quaternion		m_qOiginal;void Awake(){}void OnEnable(){UpdateBillboard();}public void UpdateBillboard(){m_fRndValue	= Random.Range(0,360.0f);if (enabled)Update();}void Start(){m_qOiginal	= ation;}void Update(){if (Camera.main == null)return;Vector3		vecUp;if (m_bFixedObjectUp)vecUp		= transform.up;else vecUp		= ation * Vector3.up;if (m_bCameraLookAt)transform.LookAt(ansform,	vecUp);else transform.LookAt(transform.position + ation * Vector3.back, vecUp);switch (m_FrontAxis){case AXIS_TYPE.AXIS_FORWARD:	break;case AXIS_TYPE.AXIS_BACK:		transform.Rotate(transform.up,		180, Space.World);		break;case AXIS_TYPE.AXIS_RIGHT:		transform.Rotate(transform.up,		270, Space.World);		break;case AXIS_TYPE.AXIS_LEFT:		transform.Rotate(transform.up,		 90, Space.World);		break;case AXIS_TYPE.AXIS_UP:			transform.Rotate(transform.right,	 90, Space.World);		break;case AXIS_TYPE.AXIS_DOWN:		transform.Rotate(transform.right,	270, Space.World);		break;}if (m_ation  = Quaternion.Euler(new Vector3(0, ation.eulerAngles.y, ation.eulerAngles.z));if (m_RatationMode == ROTATION.RND)transform.localRotation	*= Quaternion.Euler((m_RatationAxis == AXIS.X ? m_fRndValue : 0), (m_RatationAxis == AXIS.Y ? m_fRndValue : 0), (m_RatationAxis == AXIS.Z ? m_fRndValue : 0));if (m_RatationMode == ROTATION.ROTATE){float	fRotValue = Time.deltaTime * m_fRotationValue;transform.Rotate((m_RatationAxis == AXIS.X ? fRotValue : 0), (m_RatationAxis == AXIS.Y ? fRotValue : 0), (m_RatationAxis == AXIS.Z ? fRotValue : 0), Space.Self);}}
}
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
using System.Collections;
using System.IO;[CustomEditor(typeof(NcBillboard))]public class NcBillboardEditor : FXMakerEditor
{// Attribute ------------------------------------------------------------------------protected	NcBillboard		m_Sel;// Property -------------------------------------------------------------------------// Event Function -------------------------------------------------------------------void OnEnable(){m_Sel = target as NcBillboard;m_UndoManager	= new FXMakerUndoManager(m_Sel, "NcBillboard");}void OnDisable(){}public override void OnInspectorGUI(){AddScriptNameField(m_Sel);m_UndoManager.CheckUndo();// --------------------------------------------------------------bool bClickButton = false;EditorGUI.BeginChangeCheck();{
//			DrawDefaultInspector();m_Sel.m_fUserTag = EditorGUILayout.FloatField(GetCommonContent("m_fUserTag"), m_Sel.m_fUserTag);m_Sel.m_bCameraLookAt		= EditorGUILayout.Toggle(GetHelpContent("m_bCameraLookAt")			, m_Sel.m_bCameraLookAt);m_Sel.m_bFixedObjectUp		= EditorGUILayout.Toggle(GetHelpContent("m_bFixedObjectUp")			, m_Sel.m_bFixedObjectUp);m_Sel.m_bFixedStand			= EditorGUILayout.Toggle(GetHelpContent("m_bFixedStand")			, m_Sel.m_bFixedStand);m_Sel.m_FrontAxis			= (NcBillboard.AXIS_TYPE)EditorGUILayout.EnumPopup(GetHelpContent("m_FrontAxis"), m_Sel.m_FrontAxis, GUILayout.MaxWidth(Screen.width));m_Sel.m_RatationMode		= (NcBillboard.ROTATION)EditorGUILayout.EnumPopup(GetHelpContent("m_RatationMode"), m_Sel.m_RatationMode, GUILayout.MaxWidth(Screen.width));if (m_Sel.m_RatationMode == NcBillboard.ROTATION.RND || m_Sel.m_RatationMode == NcBillboard.ROTATION.ROTATE)m_Sel.m_RatationAxis	= (NcBillboard.AXIS)EditorGUILayout.EnumPopup(GetHelpContent("m_RatationAxis"), m_Sel.m_RatationAxis, GUILayout.MaxWidth(Screen.width));if (m_Sel.m_RatationMode == NcBillboard.ROTATION.ROTATE)m_Sel.m_fRotationValue	= EditorGUILayout.FloatField(GetHelpContent("m_fRotationValue")		, m_Sel.m_fRotationValue);}m_UndoManager.CheckDirty();// --------------------------------------------------------------if ((EditorGUI.EndChangeCheck() || bClickButton) && GetFXMakerMain())OnEditComponent();// ---------------------------------------------------------------------if (ltip != "")m_LastTooltip	= ltip;HelpBox(m_LastTooltip);}// ----------------------------------------------------------------------------------// ----------------------------------------------------------------------------------protected GUIContent GetHelpContent(string tooltip){string caption	= tooltip;string text		= FXMakerTooltip.GetHsEditor_NcBillboard(tooltip);return GetHelpContent(caption, text);}protected override void HelpBox(string caption){string	str	= caption;if (caption == "" || caption == "Script")str = FXMakerTooltip.GetHsEditor_NcBillboard("");base.HelpBox(str);}
}
	protected static string[,]	HcFolderPopup_Common = {{"- Display an image and a name together.","- Do not divide into sub directories; show all contents in the list.","- Finish operations and close the Popup window." + "n" +"- As the chosen operation is already saved, choose Undo first if you want to cancel" + "n" +"- Though the window is closed, you can use Undo function by opening the window again.","- Cancel save.","- Save in the chosen category.","- Remove the chosen prefab."}};

本文发布于:2024-01-31 10:11:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170666711927775.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:广告牌   技术   Unity
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23