Ejemplo n.º 1
0
    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"));
    }