void OnPostprocessModel(GameObject input) { // 只处理名为"Enemy2b"的模型 if (!input.name.Contains("Enemy2b")) { return; } // 设置导入模型的tag input.tag = "Enemy"; // 查找碰撞模型 foreach (Transform obj in input.GetComponentsInChildren <Transform>()) { if (obj.name.CompareTo("col") == 0) { // 取消碰撞模型的显示 MeshRenderer r = obj.GetComponent <MeshRenderer>(); r.enabled = false; // 添加Mesh碰撞体 obj.gameObject.AddComponent <MeshCollider>(); // 设置碰撞体的tag obj.tag = "Enemy"; } } // 设置刚体 Rigidbody rigid = input.AddComponent <Rigidbody>(); rigid.useGravity = false; rigid.isKinematic = true; // 取得导入模型的相关信息 ModelImporter importer = assetImporter as ModelImporter; // 从工程中将该模型读出来 GameObject tar = (GameObject)AssetDatabase.LoadAssetAtPath(importer.assetPath, typeof(GameObject)); // 将这个模型创建为prefab GameObject prefab = (GameObject)PrefabUtility.CreatePrefab("Assets/Prefabs/Enemy2c.prefab", tar); // 为prefab添加声音组件 prefab.AddComponent <AudioSource>(); // 获得子弹的prefab GameObject rocket = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/EnemyRocket.prefab", typeof(GameObject)); // 获得爆炸效果的prefab GameObject fx = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/FX/Explosion.prefab", typeof(GameObject)); // 为prefab添加角本 SuperEnemy enemy = prefab.AddComponent <SuperEnemy>(); // 设置角本的默认参数 enemy.m_life = 50; enemy.m_point = 50; enemy.m_rocket = rocket.transform; enemy.m_explosionFX = fx.transform; }
protected void createSuperEnemy() { // 取得导入模型的相关信息 ModelImporter importer = assetImporter as ModelImporter; // 将模型从工程中读出来 GameObject tar = AssetDatabase.LoadAssetAtPath <GameObject>(importer.assetPath); // 将这个模型创建为Prefab GameObject prefab = PrefabUtility.SaveAsPrefabAsset(tar, "Assets/Prefabs/SuperEnemyEx.prefab"); // 设置Prefab的tag prefab.tag = "Enemy"; // 查找碰撞模型 foreach (Transform obj in prefab.GetComponentInChildren <Transform>()) { if (obj.name == "col") { // 取消碰撞模型的显示 MeshRenderer r = obj.GetComponent <MeshRenderer>(); r.enabled = false; // 添加Mesh碰撞体 if (obj.gameObject.GetComponent <MeshCollider>() == null) { obj.gameObject.AddComponent <MeshCollider>(); } // 设置碰撞体的tag obj.tag = "Enemy"; } } // 设置刚体 Rigidbody rigid = prefab.AddComponent <Rigidbody>(); rigid.useGravity = false; rigid.isKinematic = true; // 为prefab添加声音组件 prefab.AddComponent <AudioSource>(); // 获得子弹的Prefab GameObject rocket = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/EnemyRocket.prefab"); // 获得爆炸效果的Prefab GameObject fx = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Fx/Explosion.prefab"); // 添加敌人脚本 SuperEnemy enemy = prefab.AddComponent <SuperEnemy>(); enemy.m_life = 10; enemy.m_point = 10; enemy.m_rocket = rocket.transform; enemy.m_explosionFX = fx.transform; }