我正在研究Unity中的一個項目,該項目涉及將任何非靜態對象從一個傳送到配對的區域。這部分很好,但爲了方便,我試圖編寫腳本的一部分,它將調整一個對象的大小,如果它的對被調整大小,這樣它們將總是具有相同的大小。到目前爲止它的工作 - 大多數。我遇到的唯一問題是當試圖通過Transform組件調整大小時 - 例如,在Inspector中鍵入數字,或者在X或Y或Z上使用值滑塊。這些手柄工作正常。我想,這並不是什麼大不了的事,但如果我能弄清楚爲什麼這樣做不行,所以我可以學會將來做什麼,我會很高興。下面的代碼:Unity - 調整一個GameObject的大小以匹配另一個
[ExecuteInEditMode]
public class TransferRegion : MonoBehaviour {
// Unrelated code...
public bool scaleManuallyAltered {
get; private set;
}
[SerializeField]
private TransferRegion pair;
private Vector3 scale;
// Called whenever the scene is edited
void Update() {
if (scale != gameObject.transform.localScale) {
scaleManuallyAltered = true;
scale = gameObject.transform.localScale;
}
if (pair && scaleManuallyAltered && !pair.scaleManuallyAltered) {
pair.transform.localScale = scale;
}
}
// Called AFTER every Update call
void LateUpdate() {
scaleManuallyAltered = false;
}
// Unrelated code...
}
如果任何人都可以看到一些重大的邏輯錯誤我做的,我想知道。如果我的代碼有點難以理解,我也可以解釋一下我的邏輯流程,我知道我很容易產生一些令人困惑的結構。
謝謝大家。
你的代碼是做什麼的?它不是做什麼的?如果不通過「變換」,你如何縮放? – 31eee384
代碼查看應用對象是否已調整大小,如果有,則調整配對對象的大小。更確切地說,如果GameObject的當前比例與先前記錄的比例不同,在這種情況下,它將'scaleManuallyAltered'標誌設置爲true,然後重置scale變量,然後檢查其他GameObject是否已經調整大小;如果沒有,則會將該對中的比例更改爲當前比例。 – BHustus
哦,對。我正在看*的代碼幾乎可以工作。關鍵的失敗:它似乎並不喜歡在一個對象或另一個對象上的Transform組件中接受手動,編號類型的縮放編輯。我不確定你的意思是「不通過變換」 - 因爲我認爲我*是*。 – BHustus