transform.position坐标更改

修改position的x值,直接修改

transform.position = new Vector3(1,1,1);
transform.position.x = 2;

会报错。

因为position是一个结构体,那么transform.position返回的是一个值类型。

(Vector3是一个struct结构体类型)


所以我们的更改是更改在一个复制体身上,对transform.position.x并没有影响。编译器不会通过这种操作。

Vector3 pos = transform.position;//pos并非引用。
pos.x = 2;
transform.position = pos;

这样就能成功对结构体transform.position.x更改了。

下面是一个回到滚动列表顶部的方法:

//找到节点对象

 protected override void InitUIInfo()
    {

        tran_ScrollView = FindChild(this.gameObject, "ScrollView");
        tran_Viewport = FindChild(tran_ScrollView.gameObject, "Viewport");
        tran_Content = FindChild(tran_Viewport.gameObject, "Content");
    }

 

//回到顶部的方法

    private void GoTop()
    {

        localPos = tran_Content.localPosition;
        localPos.y = 0;
        tran_Content.localPosition = localPos;
        //tran_Content.localPosition.x = 0; 不能直接赋值
    }

另一种回到顶部的方法:

Scroll View回滚到顶部: 直接赋值或者自己写个Vector3.Lerp()差值移动,NGUI也有:

 

scroll.content.DOLocalMove(Vector3.zero, 0.2f);

 

总结: 

1,Transform中的position是属性(property)(换成方法也一样,因为属性的实现本质上还是方法)而不是公有字段(fiel)

2,position的类型是Vector3的,而Vector3是Struct类型

3,Struct之间的赋值是拷贝而不是引用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值