static int Instantiate(IntPtr L) { int count = LuaDLL.lua_gettop(L); if (count == 1) { Object arg0 = (Object)LuaScriptMgr.GetUnityObject(L, 1, typeof(Object)); Object o = CUnityUtil.Instantiate(arg0); LuaScriptMgr.Push(L, o); return(1); } else if (count == 3) { Object arg0 = (Object)LuaScriptMgr.GetUnityObject(L, 1, typeof(Object)); Vector3 arg1 = LuaScriptMgr.GetVector3(L, 2); Quaternion arg2 = LuaScriptMgr.GetQuaternion(L, 3); Object o = CUnityUtil.Instantiate(arg0, arg1, arg2); LuaScriptMgr.Push(L, o); return(1); } else { LuaDLL.luaL_error(L, "invalid arguments to method: Object.Instantiate"); } return(0); }
void OnPBLoaded(GameObject pb_cache, ref Transform _ground, GROUND_TYPE ground_type) { if (pb_cache != null) { //if (pb_cache == null) //{ // GameObject g_pb_new = obj as GameObject; // pb_cache = g_pb_new; //} if (_ground == null) { if (_GroundT != null && pb_cache != null) { GameObject g_g = CUnityUtil.Instantiate(pb_cache) as GameObject; if (g_g != null) { _ground = g_g.transform; _ground.SetParent(_GroundT, false); g_g.name = ground_type.ToString(); //g_g.SetActive(GroundType == ground_type); } } } } }
protected virtual GListItem TryCreateItem() { if (CellTemplate == null) { return(null); } GListItem rv = null; rv = _CellPool.TakeOut(); if (rv == null) { GameObject item = CUnityUtil.Instantiate(CellTemplate.gameObject) as GameObject; GListItem itemCon = GListItem.Get(item); itemCon.RectTrans.SetParent(_Content, false); rv = itemCon; if (HasChildButton && this.ClickItemButtonCallBack != null) { itemCon.OnItemClickButton = this.OnClickItemButton; } } GNewUITools.SetVisible(rv.RectTrans, true); return(rv); }
public bool PlayWeatherMusic(string audioName, float fadeInTime) { string eventName = string.Empty; string switchGroup = string.Empty; string switchState = string.Empty; if (CUnityUtil.IsWwiseAudioName(audioName)) { CUnityUtil.GetWwiseAudioName(audioName, out eventName, out switchGroup, out switchState); } else { return(false); } #if false //LOG_WWISE && UNITY_EDITOR Common.HobaDebuger.LogWarningFormat("[UnityAudio] Playing [Wwise] Event: {0} SwitchGroup: {1} SwitchState: {2}", eventName, switchGroup, switchState); #endif if (_WeatherSoundEntry.IsEnabled) { CheckAudioListener(); SafeInitGameObject(_WeatherSoundEntry, "weather"); LoadAndPlayMusic(_WeatherSoundEntry, eventName, switchGroup, switchState); } return(true); }
public bool IsConnected(Vector3 startPos, Vector3 endPos) { //float ratio0 = 0; float ratio1 = 0; bool bHit0 = false; bool bHit1 = false; RaycastHit hitInfo; Vector3 dir = endPos - startPos; float length = dir.magnitude; dir.Normalize(); if (length > 0.1f && CUnityUtil.RayCastWithRadius(0, startPos, dir, out hitInfo, length, CUnityUtil.LayerMaskBlockable)) { //ratio0 = hitInfo.distance / length; bHit0 = true; } if (NavMeshManager.Instance.IsInited && !NavMeshManager.Instance.IsConnected(startPos, endPos, ref ratio1)) { bHit1 = true; } return(!bHit0 && !bHit1); }
public void SetData(Vector3 targetPos, float speed, LuaFunction cb, int objID, float fOffset, bool autopathing) { if (_ObjectComponent == null) { _ObjectComponent = _Owner.GetComponent <ObjectBehaviour>(); } _TargetPos = targetPos; #region 主角自动寻路判断逻辑 if (_OwnerType == ObjectBehaviour.OBJ_TYPE.HOSTPLAYER) { if (fOffset > 0.0f && Util.DistanceH(_Owner.transform.position, targetPos) < fOffset) //检查是否距离过近, 取消寻路,走直线逻辑 { CHostPathFindingInfo.Instance.Clear(); } else { CalcHostPathFindingInfo(); SetCameraQuickFollow(autopathing); } } #endregion _MoveSpeed = speed; _TargetPos.y = CUnityUtil.GetMapHeight(_TargetPos) + _ObjectComponent.OffsetY; // 只需要在设置目标点时,计算一次高度 _DestOffset = fOffset; if (OnFinishCallbackRef != null) { OnFinishCallbackRef.Release(); } OnFinishCallbackRef = cb; _BlockOccurCount = 0; }
public void Show(TweenCallback cb) { if (_MaskGameObject == null) { Action <UnityEngine.Object> callback = (asset) => { _MaskGameObject = CUnityUtil.Instantiate(asset) as GameObject; if (_MaskGameObject == null) { return; } _MaskGameObject.transform.localScale = Vector3.one; _ImageComp = _MaskGameObject.transform.Find("Canvas/Image").GetComponent <Image>(); _TextComp = _MaskGameObject.transform.Find("Canvas/Text").GetComponent <Text>(); if (_ImageComp != null) { _ImageBenginAlpha = _ImageComp.color.a; var tweener = _ImageComp.DOFade(1, 0.5F); if (cb != null && tweener != null) { tweener.OnComplete <Tweener>(cb); } } if (_TextComp != null) { _TextBenginAlpha = _TextComp.color.a; _TextComp.DOFade(1, 0.5F); } }; CAssetBundleManager.AsyncLoadResource(CgMaskPath, callback, false); } else { _MaskGameObject.SetActive(true); _MaskGameObject.transform.localScale = Vector3.one; if (_ImageComp != null) { var c = _ImageComp.color; c.a = _ImageBenginAlpha; _ImageComp.color = c; var tweener = _ImageComp.DOFade(1, 0.5F); if (cb != null) { tweener.OnComplete <Tweener>(cb); } } if (_TextComp != null) { var c = _TextComp.color; c.a = _TextBenginAlpha; _TextComp.color = c; _TextComp.DOFade(1, 0.5F); } } }
protected GListItem TryCreateItem() { GListItem rv = null; #if IN_GAME rv = _Pool.TakeOut(); #endif if (rv == null) { RectTransform item = CUnityUtil.Instantiate(_CellRect) as RectTransform; item.SetParent(Trans, false); GListItem item_com = item.GetComponent <GListItem>(); if (item_com == null) { item_com = item.gameObject.AddComponent <GListItem>(); } //register events if (this.InitItemCallBack != null) { item_com.OnItemInit = this.OnShowItem; } if (this.ClickItemCallBack != null) { item_com.OnItemClick = this.OnClickItem; } //if (this.PressItemCallBack != null) //{ // item_com.OnItemPointerDown = this.OnPressItem; //} //if (this.ReleaseItemCallBack != null) //{ // item_com.OnItemPointerUp = this.OnReleaseItem; //} if (this.LongPressCallBack != null) { item_com.OnItemLongPress = this.OnLongPressItem; } if (HasChildButton && this.ClickItemButtonCallBack != null) { item_com.OnItemClickButton = this.OnClickItemButton; } rv = item_com; } GNewUITools.SetVisible(rv.RectTrans, true); return(rv); }
public IEnumerable DoCheckCharacterCoroutine(string prefabName, GameObject char_go) { List <GameObject> rendererList = new List <GameObject>(); CUnityUtil.FindChildLeaf(typeof(SkinnedMeshRenderer), typeof(MeshRenderer), char_go, rendererList); foreach (var go in rendererList) { Material[] materials; SkinnedMeshRenderer renderer = go.GetComponent <SkinnedMeshRenderer>(); if (renderer != null) { materials = renderer.sharedMaterials == null ? renderer.materials : renderer.sharedMaterials; } else { MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>(); materials = meshRenderer.sharedMaterials == null ? meshRenderer.materials : meshRenderer.sharedMaterials; } for (int i = 0; i < materials.Length; ++i) { Material mat = materials[i]; if (IsPlayerPart(prefabName, go.name)) { continue; } if (mat == null) { continue; } Shader shader = mat.shader; if (shader == null) { continue; } AddCharacterShader(shader.name, mat.shaderKeywords); // CheckShader_Standard(shader.name, mat.name, go.name, prefabName); CheckShader_NoUsed_GrabPass(shader.name, mat.name, go.name, prefabName); CheckShader_KriptoFXParticle(shader.name, mat.name, go.name, prefabName, mat.shaderKeywords); CheckShader_Distortion(shader.name, mat.name, go.name, prefabName, false); CheckShader_DepthTexture(shader.name, mat.name, go.name, prefabName); CheckShader_CutoutBorder(shader.name, mat.name, go.name, prefabName); CheckShader_NoOutput(shader.name, mat.name, go.name, prefabName); } } yield return(null); }
protected override void OnSafeInit() { base.OnSafeInit(); ScrollRect scrollRect = GetComponent <ScrollRect>(); for (int i = 0; i < 8; i++) { RectTransform item = CUnityUtil.Instantiate(CellTemplate) as RectTransform; item.SetParent(scrollRect.content, false); } }
public string Play2DAudio(string audioName, int sortId = 0, bool isLoop = false) { if (CUnityUtil.IsWwiseAudioName(audioName)) { return(string.Empty); } EffectAudioSourceItem item = _PlaySFX(audioName, AudioType.S2D, null, Vector3.zero, sortId, isLoop); return(item != null && item.audioSource != null ? item.audioSource.name : string.Empty); }
//找到寻路点上第一个和目标点连通的点 public bool FindFirstConnectedPoint(Vector3 startPos, Vector3 endPos, Vector3 polyPickExt, float stepSize, out Vector3 selectPoint) { selectPoint = endPos; if (IsConnected(startPos, endPos)) { selectPoint = startPos; return(true); } if (!NavMeshManager.Instance.IsInited) { return(false); } float[] tempAllPoints = NavMeshManager.TempAllPoints; int outVertNum = 0; Vector3 targetPos = endPos; if (!NavMeshManager.Instance.GetWayPointsAtCurrentMap(startPos, targetPos, polyPickExt, stepSize, 0.1f, tempAllPoints, out outVertNum) || outVertNum <= 0) { return(false); } for (int i = 0; i < outVertNum; ++i) { var vec = new Vector3(tempAllPoints[i * 3], tempAllPoints[i * 3 + 1], tempAllPoints[i * 3 + 2]); vec.y = CUnityUtil.GetMapHeight(vec); //看是否被阻挡 RaycastHit hitInfo; Vector3 dir = endPos - startPos; float length = dir.magnitude; if (length > 0.1f) { dir.Normalize(); if (CUnityUtil.RayCastWithRadius(0, startPos, dir, out hitInfo, length, CUnityUtil.LayerMaskBlockable)) { break; } } if (NavMeshManager.Instance.IsInited && NavMeshManager.Instance.IsConnected(vec, endPos)) { selectPoint = vec; return(true); } } return(false); }
public void HandleClick(Vector2 scr_pos, bool can_touch_ground) { Camera main_camera = Main.Main3DCamera; if (main_camera != null) { Vector3 scr_pos3 = new Vector3(scr_pos.x, scr_pos.y); RaycastHit hit_info; Ray ray = main_camera.ScreenPointToRay(scr_pos3); int ray_mask; if (can_touch_ground) { ray_mask = CUnityUtil.LayerMaskEntity | CUnityUtil.LayerMaskClickable | CUnityUtil.LayerMaskTerrainBuilding; } else { ray_mask = CUnityUtil.LayerMaskHostPlayer; } if (Physics.Raycast(ray, out hit_info, Mathf.Infinity, ray_mask)) { Collider cd = hit_info.collider; if (cd == null) { return; } if (cd.gameObject.layer == CUnityUtil.Layer_Terrain) { Vector3 pos = hit_info.point; LuaScriptMgr.Instance.CallLuaOnClickGroundFunc(pos); } else if (cd.gameObject.layer == CUnityUtil.Layer_Building) { Vector3 pos = hit_info.point; pos.y = CUnityUtil.GetMapHeight(pos); LuaScriptMgr.Instance.CallLuaOnClickGroundFunc(pos); } else if (cd.gameObject.layer != CUnityUtil.Layer_Unblockable) { ObjectBehaviour oc = cd.gameObject.GetComponentInParent <ObjectBehaviour>(); if (oc != null) { oc.OnClick(); } } } } }
public static GameObject Clone(this GameObject prefab) { if (null == prefab) { return(null); } var cloned = CUnityUtil.Instantiate(prefab) as GameObject; var prefabTransform = prefab.transform; cloned.transform.parent = prefabTransform.parent; // in NGUI, the localScale will be adjusted automatically according to the scale of camera. so restore it. cloned.transform.localScale = prefabTransform.localScale; return(cloned); }
public Object Get() { Object element = null; if (_Stack.Count == 0) { element = CUnityUtil.Instantiate(_Prefab); } else { element = _Stack.Pop(); } return(element); }
private void CreateDefault() { var parentTrans = GetTransformParent(); if (parentTrans == null) { return; } var prefab = CAssetBundleManager.SyncLoadAssetFromBundle <GameObject>(path); if (prefab == null) { return; } var go = CUnityUtil.Instantiate(prefab) as GameObject; if (go != null) { go.name = EntityId; var goT = go.transform; if (clientPath != string.Empty) { GameObject goParent = GameObject.Find(clientPath); if (goParent) { goT.parent = goParent.transform; } goT.localPosition = position; goT.localRotation = Quaternion.Euler(rotation); } else { goT.parent = parentTrans; goT.position = position; goT.rotation = Quaternion.Euler(rotation); } Util.SetLayerRecursively(go, LAYER_CG); SetTransform(goT); if (type == EntityType.Sfx) { go.SetActive(false); } } }
private void PlayCommonCG() { Action <UnityEngine.Object> callback = (asset) => { // 异步加载中 可能存在其他操作(比如cg结束 切换成功) if (asset == null || _CgXmlConfig.Path == null || !_CgXmlConfig.Path.Contains(asset.name)) { return; } var cg = CUnityUtil.Instantiate(asset) as GameObject; if (cg == null) { return; } var cgg = cg.GetComponent <CGGlobal>(); if (cgg == null) { Destroy(cg); return; } _CurCGGlobal = cgg; _CurCutscene = cg.GetComponentInChildren <Cutscene>(); _CurCutscene.CutsceneStarted += OnCutsceneStarted; _CurCutscene.CutsceneFinished += OnCutsceneFinished; if (_CgXmlConfig.StartCallback != null) { _CgXmlConfig.StartCallback(); _CgXmlConfig.StartCallback = null; } if (_CgXmlConfig.IsMaskShown) { _CGMask.Hide(); } if (_CurCutscene != null) { _CurCutscene.Optimize(); _CurCutscene.Play(); } }; CAssetBundleManager.AsyncLoadResource(_CgXmlConfig.Path, callback, false); }
public bool TickOtherEntity(float dt) { Vector3 pos = _Owner.position; //计算方向,移动 _MoveDir = _TargetPos - pos; _MoveDir.y = 0; float fDistLeft = 0; if (!Util.IsValidDir(ref _MoveDir, ref fDistLeft)) { _MoveDir = _Owner.forward; } float fDeltaMove = _MoveSpeed * dt; float fMinDist = Mathf.Max(fDeltaMove, NEAREST_DIST); //判断这次移动的距离是否超过剩余距离,停止 if (fDistLeft <= fMinDist) { Vector3 vPos = _TargetPos; //到达 vPos.y = CUnityUtil.GetMapHeight(vPos) + _ObjectComponent.OffsetY; _Owner.position = vPos; //到达 RealOnFinish(BEHAVIOR_RETCODE.Success, _MoveDir); return(true); } pos = _Owner.position + fDeltaMove * _MoveDir; if (Util.IsNaN(pos)) { return(false); } pos.y = CUnityUtil.GetMapHeight(pos) + _ObjectComponent.OffsetY; _Owner.position = pos; if (!_ObjectComponent.HasTurnBehavior()) //如果同时有转向,则不设置方向 { if (IsDirChanged) { TickAdjustDir(_MoveDir); } } return(false); }
public bool IsCollideWithBlockable(Vector3 startPos, Vector3 endPos) { RaycastHit hitInfo; Vector3 dir = endPos - startPos; float length = dir.sqrMagnitude; if (length > 0.01f) { dir.Normalize(); if (CUnityUtil.RayCastWithRadius(0, startPos, dir, out hitInfo, length, CUnityUtil.LayerMaskBlockable)) { return(true); } } return(false); }
//设置是否进入战斗锁定视角 public void SetCamFightLockState(bool isLock, GameObject target = null) { if (isLock && target != null && _CamCtrlMode == CTRL_MODE.FOLLOW) { _IsChangeLockTarget = _FightLockTarget != target; //只有跟随模式才能进入锁定 _FightLockTarget = target; IsFightLock = true; _LockTargetHeightOffset = CUnityUtil.GetModelHeight(_FightLockTarget, true) / 2; } else { QuitCamFightLock(); } }
protected GDragablePageItem CreateItem() { GDragablePageItem page_item = null; page_item = _Pool.TakeOut(); if (page_item == null) { RectTransform item = CUnityUtil.Instantiate(_CellItem) as RectTransform; item.SetParent(Trans, false); Vector2 new_pos = GNewUITools.GetAlignedPivot(NewAlign.Left); if (IsVertical) { new_pos = GNewUITools.GetAlignedPivot(NewAlign.Top); } item.pivot = new_pos; item.anchorMax = new_pos; item.anchorMin = new_pos; GDragablePageItem item_com = item.GetComponent <GDragablePageItem>(); if (item_com == null) { item_com = item.gameObject.AddComponent <GDragablePageItem>(); } if (this._PageItemInitCallBack != null) { item_com.OnItemInit = OnInitPageItem; } if (this._ClickPageItemCallBack != null) { item_com.OnItemClick = OnClickPageItem; } if (_HasChildButton && this._ClickPageItemButtonCallBack != null) { item_com.OnItemClickButton = this.OnClickPageItemButton; } page_item = item_com; } GNewUITools.SetVisible(page_item.RectTrans, true); return(page_item); }
public void AdjustOffsetWithScale(GameObject effectiveModel, float fAddHeight, float fScale) { if (FollowTarget == null) { return; } if (effectiveModel == null) { effectiveModel = FollowTarget; } var height = CUnityUtil.GetModelHeight(effectiveModel, fScale, false); Offset.y = height + .2f; Offset.y += fAddHeight; }
public bool TickOtherEntity(float dt) { if (_TargetTrans == null) { RealOnFinish(BEHAVIOR_RETCODE.Failed, _Owner.forward); return(true); } Vector3 curPos = _Owner.position; Vector3 targetPos = _TargetTrans.position; float distanceSqr = Util.SquareDistanceH(curPos, targetPos); //计算方向,移动 Vector3 desired = targetPos - _Owner.position; desired.y = 0; if (!Util.IsValidDir(ref desired)) { desired = _Owner.forward; } if (distanceSqr < _MaxDistanceSqr && distanceSqr > _MinDistanceSqr) { if (!_IsLoop) { RealOnFinish(BEHAVIOR_RETCODE.Success, desired); return(true); } else { return(false); } } Vector3 pos = _Owner.position + _MoveSpeed * dt * desired; if (!_ObjectComponent.HasTurnBehavior()) //如果同时有转向,则不设置方向 { TickAdjustDir(desired); // desired } pos.y = CUnityUtil.GetMapHeight(pos) + _ObjectComponent.OffsetY; _Owner.position = pos; return(false); }
private static int GetMapHeight(IntPtr L) { int count = LuaDLL.lua_gettop(L); const int nRet = 1; if ((count == 1 && LuaScriptMgr.CheckTypes(L, 1, typeof(LuaTable)))) { Vector3 pos = LuaScriptMgr.GetVector3(L, 1); float heigth = CUnityUtil.GetMapHeight(pos); LuaScriptMgr.Push(L, heigth); } else { LogParamError("GetMapHeight", count); LuaScriptMgr.Push(L, 0); } return(CheckReturnNum(L, count, nRet)); }
public bool PlayBackgroundMusic(string bgmName, float fadeInTime) { if (CUnityUtil.IsWwiseAudioName(bgmName)) { return(false); } if (_BgmSoundEntry.IsEnabled) { CheckAudioListener(); SafeInitGameObject(_BgmSoundEntry, "background"); LoadAndPlayMusic(_BgmSoundEntry, bgmName, fadeInTime); } return(true); }
public bool PlayWeatherMusic(string envName, float fadeInTime) { if (CUnityUtil.IsWwiseAudioName(envName)) { return(false); } if (_WeatherSoundEntry.IsEnabled) { CheckAudioListener(); SafeInitGameObject(_WeatherSoundEntry, "weather"); LoadAndPlayMusic(_WeatherSoundEntry, envName, fadeInTime); } return(true); }
private void OnPrefabLoaded(UnityEngine.Object obj_pf) { if (obj_pf == null) { Debug.LogWarning("Resource not found: " + this.FxPath); return; } _IsLoading = false; PoolPrefabe(FxPath, obj_pf); //1.Am I Destroyed? if (_CachedTrans == null || gameObject == null || Target == null) { return; } //2.Inst _FxObject = CUnityUtil.Instantiate(obj_pf) as GameObject; Transform t_fx = _FxObject.transform; t_fx.SetParent(_CachedTrans, false); //3.Adjust Layer if (_FxObject.layer != Target.layer) { Util.SetLayerRecursively(_FxObject, Target.layer); } //4.Adjust sorting mode _IsUSortDirty = true; if (gameObject.activeInHierarchy) { AjustSorting(); } //else if(_IsStarted) //{ // Debug.LogError("Playing fx on Inactive Node " + GNewUITools.PrintScenePath(_CachedTrans)); //} //5 //6 StartPlay(); }
protected void UpdateArcNoise(int segmentIdx, bool reset) { for (int i = 0; i <= _SegmentNums[segmentIdx]; i++) { var factor = GetShiftCoef((float)i / _SegmentNums[segmentIdx]); if (reset) { _ArcTangentsShift[segmentIdx, i * 2] = CUnityUtil.RandomXYQuaternion(30 * factor); _ArcTangentsShift[segmentIdx, i * 2 + 1] = CUnityUtil.RandomXYQuaternion(30 * factor); _ShiftVectors[segmentIdx, i] = CUnityUtil.RandomVector3(0.3f * factor); } else { _ArcTangentsShift[segmentIdx, i * 2] *= CUnityUtil.RandomXYQuaternion(10f * factor); _ArcTangentsShift[segmentIdx, i * 2 + 1] *= CUnityUtil.RandomXYQuaternion(10f * factor); _ShiftVectors[segmentIdx, i] += CUnityUtil.RandomVector3(6 * Time.deltaTime) * factor; } } }
IEnumerable DoCheckMeshRendererCoroutine(string prefabName, GameObject scenePrefab) { //string shortName = System.IO.Path.GetFileNameWithoutExtension(prefabName); List <GameObject> rendererList = new List <GameObject>(); CUnityUtil.FindChildLeaf(typeof(MeshRenderer), scenePrefab, rendererList); foreach (var go in rendererList) { MeshRenderer renderer = go.GetComponent <MeshRenderer>(); Material[] materials = renderer.sharedMaterials == null ? renderer.materials : renderer.sharedMaterials; //检查 for (int i = 0; i < materials.Length; ++i) { Material mat = materials[i]; if (mat == null) { continue; } Shader shader = mat.shader; if (shader == null) { continue; } AddSceneShader(shader.name, mat.shaderKeywords); // CheckShader_Standard(shader.name, mat.name, go.name, prefabName); CheckShader_NoUsed_GrabPass(shader.name, mat.name, go.name, prefabName); CheckShader_KriptoFXParticle(shader.name, mat.name, go.name, prefabName, mat.shaderKeywords); CheckShader_Distortion(shader.name, mat.name, go.name, prefabName, false); CheckShader_DepthTexture(shader.name, mat.name, go.name, prefabName); CheckShader_CutoutBorder(shader.name, mat.name, go.name, prefabName); CheckShader_NoOutput(shader.name, mat.name, go.name, prefabName); } } yield return(null); }
private static int GetModelHeight(IntPtr L) { int count = LuaDLL.lua_gettop(L); const int nRet = 1; if ((count == 1 && LuaScriptMgr.CheckTypes(L, 1, typeof(GameObject)))) { var m = LuaScriptMgr.GetUnityObject <GameObject>(L, 1); if (m != null) { float heigth = CUnityUtil.GetModelHeight(m); LuaScriptMgr.Push(L, heigth); } else { HobaDebuger.LogWarning("GetModelHeight param 1 is null"); LuaScriptMgr.Push(L, 0); } } else if (count == 2 && LuaScriptMgr.CheckTypes(L, 1, typeof(GameObject), typeof(bool))) { var m = LuaScriptMgr.GetUnityObject <GameObject>(L, 1); if (m != null) { bool inchild = LuaScriptMgr.GetBoolean(L, 2); float heigth = CUnityUtil.GetModelHeight(m, inchild); LuaScriptMgr.Push(L, heigth); } else { HobaDebuger.LogWarning("GetModelHeight param 1 is null"); LuaScriptMgr.Push(L, 0); } } else { LogParamError("GetModelHeight", count); LuaScriptMgr.Push(L, 0); } return(CheckReturnNum(L, count, nRet)); }