跟BeaverJoe老师学习UI界面制作中,在原先的项目中,角色的solt是静态的五个角色。所以我想把他改成一个动态通过PlayerGM来控制的一个动态加载UI
效果展示
/// <summary>
/// 动态生成slot:但是要注意的是instantiate的重载中,
/// Instantiate<GameObject>(GameObject original, Vector3 position, Quaternion rotation, Transform parent)
/// 是没有instantiateInWorldSpace这个Bool的:分配父对象时,传递 true 可直接在世界空间中定位新对象。
/// 传递 false 可相对于其新父项来设置对象的位置。 但是依然可以定位在parent下面的子对象,暂时没有看出有什么影响
/// </summary>
private void CreateSolt()
{
GameObject NewSlot = Instantiate(prefabSolt, FirstSoltPostion.GetComponent<RectTransform>().anchoredPosition, Quaternion.identity, leftPanel.transform);
NewSlot.GetComponent<RectTransform>().anchoredPosition = new Vector2(-10, FristSolt_offset_y); //修改pos_y
FristSolt_offset_y -= perUnitSoltOffset;
slots.Add(NewSlot);
}
1.改变RectTransform的top GetComponent().offsetMax = new Vector2(GetComponent().offsetMax.x, top);
2.改变RectTransform的bottom GetComponent().offsetMin = new Vector2(GetComponent().offsetMin.x, bottom);
3.改变RectTransform的width,height GetComponent().sizeDelta = new Vector2(width, height);
4.改变RectTransform的pos GetComponent().anchoredPosition3D = new Vector3(posx,posy,posz); GetComponent().anchoredPosition = new
Vector2(posx,posy);
但是值得注意的是在anchoredPosition 中的X以及Y是在AnchorPresets设置为center的时候的值,若为其他设置可能它的值会有所不同,现在也不知道它的涵义到底是什么,总之以后需要注意