零碎的工作所得

1 篇文章 0 订阅

作为初学者,在写代码时碰到的一些零碎知识点,记录在此。

Resharper提示下的改进的代码。

       foreach (var collectionsEnd in ingrTarget)
                    {
                        if( collectionsEnd != null)
                        GetCollections.Instance.AddCollection(collectionsEnd);
                    }
//上面等同于:
                    foreach (var collectionsEnd in ingrTarget.Where(collectionsEnd => collectionsEnd != null))
                    {
                        GetCollections.Instance.AddCollection(collectionsEnd);
                    }


if (null == instance)
{
return new GetCollections();
}
return instance;
//上面等同于:
return instance ?? new GetCollections();

再加一个冒泡排序吧,老是记不住,其实今天也没用到,想借用一下思路,但是还是没用上。

int[] arrSort = new int[] { 10, 8, 3, 5, 6, 7, 9 };
              for (int i = 0; i < arrSort.Length; i++)
              {
                  for (int j = i + 1; j < arrSort.Length; j++)
                  {
                     if (arrSort[j] < arrSort[i])
                      {
                          temp = arrSort[j];
                         arrSort[j] = arrSort[i];
                         arrSort[i] = temp;
                     }
                 }
             }

关于动画事件的绑定,只支持本物体上脚本或组件中的方法,如果不是用脚本添加了不是本物体上的方法,会报没有 receive的错误。

找到一个做多语言的插件LeanLocalization,如果东西不多,用起来还是很简单的,如果项目复杂,就有点繁琐。

项目中找到的动态设置动画的代码片段
设置一个平移到指定位置的动画。平移到目标时有一个回弹的效果。

    void AnimateField(Vector3 pos)
    {

            float yOffset = 0;
        if (target == Target.INGREDIENT) yOffset = 0.3f;
        Animation anim = GameField.GetComponent<Animation>();
        AnimationClip clip = new AnimationClip();
//创建曲线
        AnimationCurve curveX = new AnimationCurve(new Keyframe(0, pos.x + 15),
         new Keyframe(0.7f, pos.x-0.2f), new Keyframe(0.8f, pos.x));    
        AnimationCurve curveY = new AnimationCurve(new Keyframe(0, pos.y + yOffset), 
        new Keyframe(1, pos.y + yOffset)); 

//设置曲线
        clip.SetCurve("", typeof(Transform), "localPosition.x", curveX);
        clip.SetCurve("", typeof(Transform), "localPosition.y", curveY);
        clip.AddEvent(new AnimationEvent() { time = 1, functionName = "EndAnimGamField" });
        anim.AddClip(clip, "appear");
        anim.Play("appear");
        GameField.transform.position = new Vector2(pos.x + 15, pos.y + yOffset);

    }

关于Unity 图集的问题。
最近导入项目中需要替换美术资源,通常都是直接把整个Texture文件夹替换掉,这时会出现图片没换掉的问题。gameobject 上的图片确实是指向新换的图,但是运行是却还是旧图。
原因是unity运行时调用的是图集中的文件,而不是资源面板里的文件。在unity5中是自动生成图集的,图集文件存在Library\AtlasCache路径中的。有时候直接替换之后Unity没有重新做图集,没有把旧图替换掉,所以我目前的解决方法是关掉Unity,删掉AtlasCache中哦的文件,然后再打开Unity重新自动生成一遍图集,这时图片就会替换了。

关于Animation改变图片颜色和透明度
在5.2中老版的Animation不能改变UI上图片的颜色和透明度,只能用Animator来做。

取得本地语言。
Unity提供了一个函数Application.systemLanguage,但是之前在编辑器中测的时候可以获得系统的中文是Chinese,但是到android手机上就不管用了。后来打印了一下手机上获得的语言,原来是ChineseSimplified,改了对于的多语言代码之后就OK了。

Android环境
之前打包总是出问题。涂总过来给重新装了一下android环境,不是做原生开发就不用装Android Studio,装个Android Manager就可以了。其实现在Unity做的很智能了,直接会给一个Download按钮,转到官网下载页面,
SDK:https://developer.android.com/sdk/index.html#Other
JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
直接下载就可以了。
另外还碰到接facebook的SDK的问题。具体接的方法facebook网站上有。
处理这些问题之后感觉,还是要仔细看错误提示,一般问题都能解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值