首页 > 学院 > 开发设计 > 正文

Unity 代码片段2017篇

2019-11-09 17:29:41
字体:
来源:转载
供稿:网友

代码生成AnimatorController

PRivate void CreateAnimatorController(List<AnimationClip> clipList){//创建一个控制器AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath("Assets/youkexueyuan.controller");//获取控制器的layerAnimatorControllerLayer layer = animatorController.layers[0];//获取状态机AnimatorStateMachine machine = layer.stateMachine;//添加一个坐标,让状态从这个位置开始摆放,防止状态乱摆,巨丑Vector3 dpos = new Vector3(300,0,0);foreach(AnimationClip clip in clipList){AnimatorState state = new AnimatorState(); //machine.AddState(clip.name);state.motion = clip;state.name = clip.name;machine.AddState(state, dpos);dpos += new Vector3(0,50,0);//改变下一个坐标,让状态排成一列if(state.name.Equals("idle")){machine.defaultState = state;//设置默认状态}}}

代码拷贝FBX模型动画剪辑

AnimationClip dstClip = new AnimationClip();        dstClip.name = srcClip.name;        string copyPath ="Assets/xiaobao.anim";        AssetDatabase.CreateAsset(dstClip, copyPath);        //拷贝Clip的浮点数据        EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings(srcClip);        for (int i = 0; i &lt; bindings.Length; i++)        {            AnimationUtility.SetEditorCurve(dstClip, bindings[i], AnimationUtility.GetEditorCurve(srcClip, bindings[i]));        }        dstClip.frameRate = 30.0f;

反编译游戏资源得到的都是Altas大图片变成单张图片

usingUnityEngine;usingSystem.Collections;usingUnityEditor;usingSystem.IO;publicclassSlipTexture:EditorWindow{publicTexture2DMainTex=null;[MenuItem("Window/分割图集")]publicstaticvoidCreateWindows(){SlipTexture sp =EditorWindow.CreateInstance<SlipTexture>();sp.title="分割图集";sp.Show(true);}voidOnGUI(){MainTex=EditorGUILayout.ObjectField("mainText",MainTex,typeof(Texture2D))asTexture2D;if(MainTex!=null){if(GUILayout.Button("导出成小图片")){string path =AssetDatabase.GetAssetPath(MainTex);TextureImporter importer =AssetImporter.GetAtPath(path)asTextureImporter;if(importer.textureType!=TextureImporterType.Sprite||importer.spriteImportMode!=SpriteImportMode.Multiple||importer.spritesheet.Length==0){Debug.LogError("当前图片不是Sprite Multiple格式 或者没有分割");return;}importer.isReadable=true;AssetDatabase.ImportAsset(path);AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport);string savepath =EditorUtility.OpenFolderPanel("选择要保存的文件夹",application.dataPath,"");if(!string.IsNullOrEmpty(savepath)){foreach(SpriteMetaData metaDatain importer.spritesheet)//遍历小图集{Texture2D myimage =newTexture2D((int)metaData.rect.width,(int)metaData.rect.height);for(int y=(int)metaData.rect.y; y < metaData.rect.y+ metaData.rect.height; y++)//Y轴像素{for(int x=(int)metaData.rect.x; x < metaData.rect.x+ metaData.rect.width; x++)myimage.SetPixel(x-(int)metaData.rect.x, y -(int)metaData.rect.y,MainTex.GetPixel(x, y));}//转换纹理到EncodeToPNG兼容格式if(myimage.format!=TextureFormat.ARGB32&& myimage.format!=TextureFormat.RGB24){Texture2D newTexture =newTexture2D(myimage.width, myimage.height);newTexture.SetPixels(myimage.GetPixels(0),0);myimage= newTexture;}byte[] pngData = myimage.EncodeToPNG();//AssetDatabase.CreateAsset(myimage, rootPath + "/" + image.name + "/" + metaData.name + ".PNG");File.WriteAllBytes(savepath+"/"+ metaData.name+".PNG", pngData);}}}}}}判断在不在摄像机裁剪范围
void Update()	{		if (renderer.IsVisibleFrom(Camera.main)) Debug.Log("Visible");		else Debug.Log("Not visible");	}
static function IsRenderedFrom(renderer : Renderer, camera : Camera) : boolean{    var planes = GeometryUtility.CalculateFrustumPlanes(camera);	return GeometryUtility.TestPlanesAABB(planes, renderer.bounds);}
上一篇:NGUI 翻页

下一篇:开源App动画Lottie

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表