Unity で、非静的オブジェクトを 1 つからペアにテレポートする領域を含むプロジェクトに取り組んでいます。その部分は問題ありませんが、便宜上、ペアのサイズが変更された場合に 1 つのオブジェクトのサイズを変更して、常に同じサイズになるようにするスクリプトの一部を作成しようとしています。そしてこれまでのところ、それは機能します-ほとんど。私が遭遇する唯一の問題は、Transform コンポーネントを介してサイズを変更しようとするときです。たとえば、インスペクターで数値を入力するか、X、Y、または Z の値スライダーを使用します。ハンドルは正常に機能します。大したことではないと思いますが、なぜこれがうまくいかないのかを理解できれば、将来何をすべきかを学ぶことができれば、とてもうれしいです. コードは次のとおりです。
[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...
}
私が作っている重大な論理的障害を誰かが見られる場合は、知りたいです。コードが少しわかりにくい場合は、ロジック フローについても少し説明できます。
ありがとうございます。