private static void chkWeaponPrefab(GameObject go) { var root = go.transform; var modelTrans = root.Find(MODEL_NAME); if (modelTrans == null) { string path = string.Format("Assets/Artwork/Model/Weapon/{0}.FBX", go.name); GameObject model = AssetDatabase.LoadAssetAtPath <GameObject>(path); if (model) { modelTrans = GoTools.AddChild(go, model).transform; modelTrans.name = MODEL_NAME; } else { EditorUtility.DisplayDialog("提示", string.Format("未找到模型:\n{0}", path), "确定"); return; } } modelTrans.localRotation = Quaternion.Euler(0, -90, -90); var rdr = modelTrans.GetComponentInChildren <SkinnedMeshRenderer>(); if (rdr) { var mesh = rdr.gameObject.AddComponent <MeshFilter>(); mesh.sharedMesh = rdr.sharedMesh; var meshRdr = rdr.gameObject.AddComponent <MeshRenderer>(); meshRdr.sharedMaterials = rdr.sharedMaterials; meshRdr.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; meshRdr.receiveShadows = false; meshRdr.useLightProbes = false; meshRdr.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; SkinnedMeshRenderer.DestroyImmediate(rdr); } var muzzle = root.Find(MUZZLE_NAME); if (muzzle == null) { var goM = GoTools.AddChild(go, (GameObject)null); goM.name = MUZZLE_NAME; muzzle = goM.transform; muzzle.SetParent(root); } muzzle.localRotation = Quaternion.Euler(0, -90, 0); go.SetLayerRecursively(LayerMask.NameToLayer("Role")); }