public void doIt(GameObject gameObject)
    {
        Transform target = gameObject.transform;

        for (int i = 0; i < count; i++)
        {
            Vector3       newPos = transform.position - distance * (i + 1) * transform.forward;
            PlanetMovable pm     = GameObject.Instantiate <PlanetMovable>(source, newPos, transform.rotation);

            pm.gameObject.name = "movable" + i;

            FactoryPlugin fg = factoryPloginSocket as FactoryPlugin;
            if (fg != null)
            {
                fg.doIt(pm.gameObject);
            }

            FollowerController fc = pm.gameObject.GetComponent <FollowerController>();

            fc.followTarget = target;

            target = pm.transform;
        }
    }
 public Program()
 {
     if (FactoryPlugin <MyPlugin> .GetVersion() > 1)
     {
     }
 }
    // Use this for initialization
    void Awake()
    {
        // 生成玩家需要的所有元件
        var gameObject = GameObject.Instantiate <GameObject>(source, transform.position, transform.rotation);

        var followTarget = GameObject.Instantiate <Transform>(dummy);

        followTarget.name          = "followTarget";
        followTarget.parent        = gameObject.transform;
        followTarget.localPosition = new Vector3(0, 0, -1.45f);

        var cameraTarget = GameObject.Instantiate <Transform>(dummy);

        cameraTarget.name          = "cameraTarget";
        cameraTarget.parent        = gameObject.transform;
        cameraTarget.localPosition = new Vector3(0, 1, 0);

        var cameraPivot = GameObject.Instantiate <CameraPivot>(cameraPivotPrefab);

        cameraPivot.bind(cameraTarget, gameObject.transform);

        var moveForceParameterRepository = GameObject.Instantiate <MoveForceParameterRepository>(moveForceParameterRepositoryPrefab);

        moveForceParameterRepository.transform.parent        = gameObject.transform;
        moveForceParameterRepository.transform.localPosition = Vector3.zero;

        gameObject.AddComponent <RenderBehindTheWall>();
        gameObject.AddComponent <SetCameraPivot>();
        var measuringJumpHeight = gameObject.AddComponent <MeasuringJumpHeight>();

        var slopeForceMonitor = gameObject.AddComponent <SlopeForceMonitor>();

        slopeForceMonitor.maxForceLimit = 120;

        var planetMovable = gameObject.AddComponent <PlanetMovable>();

        planetMovable.standUpDirectly              = true;
        planetMovable.slopeForceMonitor            = slopeForceMonitor;
        planetMovable.moveForceParameterRepository = moveForceParameterRepository;
        planetMovable.init();

        var surfaceFollowHelper = gameObject.AddComponent <SurfaceFollowHelper>();

        surfaceFollowHelper.cameraPivot = cameraPivot;

        var planetPlayerController = gameObject.AddComponent <PlanetPlayerController>();

        planetPlayerController.measuringJumpHeight = measuringJumpHeight;
        planetPlayerController.setCamera(cameraPivot.getCameraTransform());

        // plugin 的部分
        int pluginSide = factoryPloginSocket.Length;

        for (int i = 0; i < pluginSide; i++)
        {
            FactoryPlugin fg = factoryPloginSocket[i] as FactoryPlugin;
            if (fg != null)
            {
                fg.doIt(gameObject);
            }
        }
    }