RectTranform通用位置大小工具

2022-10-09 05:39:10 字數 2841 閱讀 9915

# 最簡單的就是,直接將anchor先設為center-mid,然後再設定位置大小

public

static

void setanchoredpos(recttransform rtf, float x, float

y)public

static

void setsize(recttransform rtf, float w, float

h)

# 不調整原來的anchor設定,通過left-top邊距來調整recttramsform的位置

///

///移動到left-top邊距處(與parent的left和top邊, 不是anchor邊), 保持大小不變

///public

static

void movebylefttopmargin(recttransform self, float leftmargin, float

topmargin)

public

static

void movebylefttopmargin(recttransform self, float leftmargin, float

topmargin, recttransform parentrtf)

else

offsetmin.x =newleftanchormargin;

var anchormax =self.anchormax;

var newtopanchormargin = topmargin - (1 - anchormax.y) *parentrect.height;

newtopanchormargin -= rect.height * 0.5f * (1 -self.localscale.y);

if (sizedelta.y <= 0) //

y方向拉伸

else

offsetmax.y = -newtopanchormargin; //

我們的margin是parent內部為正, 外部為負; unity的top offset是向上為正, 向下為負

self.offsetmin =offsetmin;

self.offsetmax =offsetmax;

}

# 獲取邊距

///

///獲取與parent的邊距(非anchor邊), 在parent內部為正, 在parent外部為負

///public

static

float

getmarginleft(recttransform self)

public

static

float

getmarginleft(recttransform self, recttransform parentrtf)

//////

獲取與parent的邊距(非anchor邊), 在parent內部為正, 在parent外部為負

///public

static

float

getmargintop(recttransform self)

public

static

float

getmargintop(recttransform self, recttransform parentrtf)

//////

獲取與parent的邊距(非anchor邊), 在parent內部為正, 在parent外部為負

///public

static

float

getmarginright(recttransform self)

public

static

float

getmarginright(recttransform self, recttransform parentrtf)

//////

獲取與parent的邊距(非anchor邊), 在parent內部為正, 在parent外部為負

///public

static

float

getmarginbottom(recttransform self)

public

static

float

getmarginbottom(recttransform self, recttransform parentrtf)

# 設定大小

///

向左為負, 向右為正

///向左為負, 向右為正

///向上為正, 向下為負

///向上為正, 向下為負

public

static

void setsizebydiff(recttransform rtf, float leftdiff, float rightdiff, float topdiff, float

bottomdiff)

public

static

void setsize(recttransform rtf, float w, float

h) }

if (sizedelta.x > 0 && sizedelta.y > 0

)

else

if (sizedelta.x > 0) //

x方向正常, y方向拉伸

}else

if (sizedelta.y > 0) //

x方向拉伸, y方向正常

sizedelta.y =h;

rtf.sizedelta =sizedelta;

}}

32位程式獲取32 64位程序檔案位址通用方法

一般來說,限於32位程式getmodulefilenameex對於64位程式來說是不管用的,我們如果需要在32位程式獲得64位程序的執行目錄可能需要用到wow64或者是queryfullprocessimagename。但是前者雖然通用,但是實現起來過於複雜,還需要用到彙編,後者 minimum s...

彙編 通用暫存器及標誌位全稱

ax accumulator 累加器 bx base 基址暫存器 cx count 計數暫存器 dx data 資料暫存器 sp stack point 堆疊指標暫存器 bp base pointer 基址指標暫存器 si source inder 源變址暫存器 di destination ind...

Linux下普通使用者使用強制位獲取root許可權

find perm 4000 2 dev null xargs s la編寫乙個c指令碼,內容如下 int main void 使用gcc編譯 gcc getuid.c o setuid 32位 報錯時 apt install gcc multilib gcc m32 o setuid 修改所有者為...