如何在 C# 中引用自己的对象而不用说出他的名字
How to refer an object of himself with out saying his name in C#
我有几个对象,我需要计算与主要点 (main) 的距离,并通过采用混沌值来增加主要点与周围每个对象之间的距离。
但我不想给每个人都放一个不同的剧本。我希望每个脚本都相同。
简而言之,这就是我正在尝试的:
222 = 2 2 2
212=2 1 2
222= 2 2 2
// 1是重点
// 2是它周围的其他物体
那么我怎么能在不说出他的名字的情况下提到他自己呢?
或者我应该改变我打算做的方式吗?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DistanceMovement : MonoBehaviour
{
public int chaos = 0;
public GameObject main; // I referred the main object
// which we calculete distance from
float distance;
void Start()
{
float distance = chaos; // firts checking
}
void Update()
{
// Gets the distance between 2 objects
float distances = Vector3.Distance (main.transform.position, object2.transform.position);
//how can I do that without saying objects name but saying it his himself??
// checks whether there was increase in chaos lvls
if (chaos - distance >= 0)
{
chaos - distance += distances;
}
}
}
我猜你的意思只是
float distances = Vector3.Distance (main.transform.position, transform.position);
其中 transform
是 MonoBehaviour
的 属性(您的 class 继承自它)和 returns
The Transform
attached to this GameObject
.
所以 GameObject
这个组件的 Transform
附加到。
而不是 object2.transform.position
,使用 transform.position
,它将起作用并且它指的是您的脚本被攻击的游戏对象。
同样为了简化,您可以先声明 Vector3 name = transform.position
,然后在需要重复使用时使用该向量。
我有几个对象,我需要计算与主要点 (main) 的距离,并通过采用混沌值来增加主要点与周围每个对象之间的距离。 但我不想给每个人都放一个不同的剧本。我希望每个脚本都相同。
简而言之,这就是我正在尝试的:
222 = 2 2 2
212=2 1 2
222= 2 2 2
// 1是重点
// 2是它周围的其他物体
那么我怎么能在不说出他的名字的情况下提到他自己呢?
或者我应该改变我打算做的方式吗?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DistanceMovement : MonoBehaviour
{
public int chaos = 0;
public GameObject main; // I referred the main object
// which we calculete distance from
float distance;
void Start()
{
float distance = chaos; // firts checking
}
void Update()
{
// Gets the distance between 2 objects
float distances = Vector3.Distance (main.transform.position, object2.transform.position);
//how can I do that without saying objects name but saying it his himself??
// checks whether there was increase in chaos lvls
if (chaos - distance >= 0)
{
chaos - distance += distances;
}
}
}
我猜你的意思只是
float distances = Vector3.Distance (main.transform.position, transform.position);
其中 transform
是 MonoBehaviour
的 属性(您的 class 继承自它)和 returns
The
Transform
attached to thisGameObject
.
所以 GameObject
这个组件的 Transform
附加到。
而不是 object2.transform.position
,使用 transform.position
,它将起作用并且它指的是您的脚本被攻击的游戏对象。
同样为了简化,您可以先声明 Vector3 name = transform.position
,然后在需要重复使用时使用该向量。