真Unity3d_说说必然会中招的C#语法

之前带一个小弟,人还行,也比较努力,技术也不错,虽然经验尚浅,对Unity3d的理解也足够,做的项目也不少,可是他的代码总是错误百出。

我也曾经指出过他这些问题,没想开了新项目,接个框架,所有这些问题,到自己又犯了,又踩坑了

虽然说 Unity3d目前统一天下,几乎70%的项目都是用Unity,但凡事都是双面刃,Cocos2dx的坑是夸张到连自己的母公司也坑死了,但Unity的坑其实也不少

一下列出各种坑

 

Enum 枚举

[System.Serializable]
        private struct TransformResult
        {
            public Vector3 position;
            public Quaternion rotation;
            public float timestamp;
        }

        public enum SyncPositionOptions
        {
            Sync,
            NotSync,
        }

        public enum SyncRotationOptions
        {
            Sync,
            NotSync,
        }

属性和字段的区别

 

携程

ScriptObject

#Editor 宏定义,EditorPrefab

事件

位运算

网上是这么说的:

首先每一个权限数都是2的N次方数

如:k1=2 ; //添加

          k2=4 ; //删除

          k3=8; //修改

          ...

如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了。

如:

         purview = k2|k3; // 赋给添加和删除权限

当需要判断在权限串中是否拥有某一权限时,就需要进行按位与。

如:

         if((purview & k1) >0)//判断此权限串是否拥有添加权限,结果>0 则进入if语句代码块中

          {

                 ....

          }    

但是,结果是,我使用相近的写法,(purview & k1) 得出的结果并不是我想要的,结果==0 ,所以权限获取并不正确

直接上图吧,我的错误是,以为 1 << 2 == 2,其实正确的是 :1 << 1 == 2,很多“”有经验“”的程序员看到这里就懵逼了,等于,再等于是什么意思,为什么1 == 1 ???其实这是左移运算,你老师不懂,师兄没没说,实习的伙伴不是大牛,然后你不是天才,工作后碰不到学习型的团队,自己太忙有无法研究,以上种种“”巧合“”,造就你就会不知道这是虾米东西

&按位与除了1&1结果是1外,其它运算结果的都是0
|

或运算的规则是:1或1等1,1或0等于1,

0或0等于0

<<左移001 -> 010(移1位,如上所说,并不是2的1次方)
 Int32 mask_x = 0x2;
 Int32 mask = 0x4;
 AppDebug.Log("testX " + (purview & mask_x));  // 输出0
 AppDebug.Log("test_ " + (purview & mask));    // 输出4
//我的purview变量是4+16,所以第1行日志输出0,第2行的判断才是我要的判断
//并且网上说 >0 的判断其实正确但并不准确,不过当你能准确写出 (purview & mask) == mask 而不是 >0 的代码,就说明你真正掌握按位与运算,
//当然这样写阅读并不好阅读,因为需要多一层逻辑理解,所以到底是要完全准确还是代码优雅,就看你怎么取舍了
//另外判断的代码需要加()

我在这里命名了Int32,发现并没有什么影响

命名成普通int,意思就是让编译的时候确定是32位还是64位,可问题是很多人都不知道自己编译的到底是不是x86_64

强制命名成Int32,意思就是就算是64位的平台,你这变量还是32位,理论是内存占用少,但关键还要看你这代码的运行时平台,说不定你的平台是个假平台呢

变量命名为int 或者 Int32,在这个测试其实都不重要,难道打印个1+1也要考虑溢出问题??真正聪明的人都是具有大智慧的人,而只有小聪明的人终其一生也只是“”自以为是“”而已

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值