在开发时,我发现预制体不会保存anchor的值,于是这就要我们手动加载啦,好运气,直接找到一篇文章介绍的
作者是chengjin1609
传送门:http://jingyan.baidu.com/article/5552ef47d82a90518ffbc914.html
下面是我的一些个人学习:如果手动设置anchor,需要做以下三个步骤
1.先将你需要设置anchor的东西禁用掉,不禁用会在开始时出现一个黑影,影响美观
this.transform.Find("Bg/Setting").gameObject.GetComponent<UISprite>().enabled = false;
2.//然后获取UIWidget,不是获取anchor组件啊,通过setanchor进行设置,
this.transform.Find("Bg/Setting").gameObject.GetComponent<UIWidget>().SetAnchor(GameObject.Find("UI Root"), 1f, -45, 1f, -15, 1f, -15, 1f, -45);
3.//最后在启用你禁用的东西
this.transform.Find("Bg/Setting").gameObject.GetComponent<UISprite>().enabled = true;
//这是一个最复杂的anchor重载
//GameObject go 表示要和谁做anchor
public void SetAnchor (GameObject go,
float left, int leftOffset,//left 的值是relative ,leftOffest就是偏移
float bottom, int bottomOffset,
float right, int rightOffset,
float top, int topOffset)
他有一些属性,我再这里给大家解释一下
m_uiwidget.leftAnchor.relative = 1f;//单独设置和什么对齐,比如说居左对齐
relative:就是相对于目标对象的哪边设置锚点,如果是leftAnchor和rightAnchor,0表示Target's Left,0.5表示Target's Center,1表示Target's Right;如果是bottomAnchor和topAnchor,0表示Target's Bottom,0.5表示Target's Center,1表示Target's Top。可以发现这个0,0.5,1所对应的内容,与Unity中Anchor菜单显示的内容有关,如下图红色区域。
m_uiwidget.leftAnchor.absolute = -45;//设置偏移